我对Python相对缺乏经验。我必须修复遗留软件中的错误并陷入困境。我们使用的是Python 2.6.6。
问题如下:
C ++中有一个调用如下:
PyObject_CallMethod( obj, "updateCallback", "(O)", list );
和Python代码中的(简化)updateCallback如下所示:
def updateCallback(self, args):
print sys.getrefcount( args )
list是PyObject *,在CallMethod之前它的引用计数是1.在使用PyObject_CallMethod调用updateCallback之后,Python代码中的print语句打印5.当PyObject_CallMethod返回时,我在调试器中看到“list” (对应于updateCalback中的args的AFAIK)仍然引用5。
现在,我明白使用(O)会将引用计数增加1,但为什么在我的情况下呢?
提前致谢