如何获取PyObject的引用计数?

wrw*_*rwt 12 c c++ python python-c-api python-internals

如何PyObject从C++ 获取a的引用计数?

有功能Py_INCREF,Py_DECREF并增加/减少它,但我没有找到任何返回对象的引用计数的函数.

我需要它用于调试目的.

the*_*eye 14

每个对象的引用计数存储在PyObject自身中,在一个名为的变量中ob_refcnt.你可以直接访问它.

typedef struct _object {
    _PyObject_HEAD_EXTRA
    Py_ssize_t ob_refcnt;          # Reference count
    struct _typeobject *ob_type;
} PyObject;
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用Py_REFCNT.

  • 我最好依赖宏,而不是可能无法保证不会更改的内部结构成员。 (2认同)