Я относительно неопытен в Python. Я должен исправить ошибку в устаревшем программном обеспечении и застрял. Мы используем Python 2.6.6.
Проблема заключается в следующем:
В C ++ есть вызов:
PyObject_CallMethod( obj, "updateCallback", "(O)", list );
и (упрощенный) updateCallback в коде Python выглядит следующим образом:
def updateCallback(self, args):
print sys.getrefcount( args )
список является PyObject *, и перед CallMethod его refcount равен 1. Сразу после вызова updateCallback с использованием PyObject_CallMethod, оператор print в коде Python печатает 5. Когда PyObject_CallMethod возвращается, я вижу в отладчике, что «список» (AFAIK, который соответствует аргументам в updateCalback) все еще имеет refcount 5.
Теперь я понимаю, что использование (O) увеличивает количество ссылок на 1, но почему это 4 в моем случае?
Заранее спасибо