Wie bekomme ich Referenzzähler eines PyObjects?

Wie bekomme ich die Referenzzählung eines PyObject von C ++?

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

Ich brauche es für Debugging-Zwecke.

One Solution collect form web for “Wie bekomme ich Referenzzähler eines PyObjects?”

Die Referenzzählung jedes einzelnen Objekts wird im PyObject selbst gespeichert, in einer Variablen namens ob_refcnt . 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 das Py_REFCNT Makro verwenden .

  • Was ist unter der Kapuze von x = 'y' 'z' in Python?
  • Warum Python kehrt True bei der Überprüfung, ob eine leere Zeichenfolge in einem anderen ist?
  • Tupel oder Liste bei der Verwendung von 'in' in einer 'if' -Klausel?
  • Was macht "del" genau?
  • Warum ist die Reihenfolge in Wörterbüchern und Mengen beliebig?
  • Wie wird Tupel in CPython implementiert?
  • Was ist der Unterschied zwischen einem umgekehrten Tupel und einer umgekehrten Liste?
  • Wie funktioniert __call__ eigentlich?
  • Fraction-Objekt hat nicht __int__ aber int (Fraction (...)) funktioniert immer noch
  • Python 3.5 Typhinweise: Kann ich überprüfen, ob Funktionsargumente mit Tippen übereinstimmen?
  • List comprehension filtering - "die set () trap"
  • Python ist die beste Programmiersprache der Welt.