2014-10-01 8 views
10

Wie erhalten Sie Referenzzahl von PyObject von C++?Wie erhalten Sie Referenzzähler eines PyObject?

Es gibt Funktionen Py_INCREF und Py_DECREF, die es erhöhen/verringern, aber ich habe keine Funktion gefunden, die Objektreferenzzahl zurückgibt.

Ich brauche es für Debugging-Zwecke.

Antwort

11

Die Referenzanzahl jedes Objekts wird in selbst in einer Variablen mit der Bezeichnung ob_refcnt gespeichert. Sie können direkt darauf zugreifen.

typedef struct _object { 
    _PyObject_HEAD_EXTRA 
    Py_ssize_t ob_refcnt;   # Reference count 
    struct _typeobject *ob_type; 
} PyObject; 

Alternativ können Sie die Py_REFCNT Macro verwenden.

+0

Ich würde besser auf das Makro als interne Strukturelemente verlassen, die wahrscheinlich nicht garantiert werden, nicht zu ändern .. – Kapichu