2

我在 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 返回时,我在调试器中看到“列表”(AFAIK 其中对应于 updateCalback 中的 args)仍有 refcount 5。

现在,我知道使用 (O) 会将引用计数增加 1,但为什么在我的情况下它是 4?

提前致谢

4

0 回答 0