Reference Counting¶
Les macros dans cette section permettent de gérer le compteur de références des objets Python.
-
void
Py_INCREF
(PyObject *o)¶ Increment the reference count for object o. The object must not be
NULL
; if you aren't sure that it isn'tNULL
, usePy_XINCREF()
.
-
void
Py_XINCREF
(PyObject *o)¶ Incrémente le compteur de références de l'objet o. La macro n'a pas d'effet si l'objet est
NULL
.
-
void
Py_DECREF
(PyObject *o)¶ Decrement the reference count for object o. The object must not be
NULL
; if you aren't sure that it isn'tNULL
, usePy_XDECREF()
. If the reference count reaches zero, the object's type's deallocation function (which must not beNULL
) is invoked.Avertissement
La fonction de dés-allocation peut invoquer du code Python arbitraire (par exemple quand une instance d'une classe avec une méthode
__del__()
est supprimée). Le code exécuté a accès à toutes les variables Python globales mais les exceptions lors de l'exécution de ce code ne sont pas propagées. Tous les objets qui peuvent être atteints à partir d'une variable globale doivent être dans un état cohérent avant d'appelerPy_DECREF()
. Par exemple le code pour supprimer un élément d'une liste doit copier une référence à l'objet dans une variable temporaire, mettre à jour la liste, et enfin appelerPy_DECREF()
avec la variable temporaire.
-
void
Py_XDECREF
(PyObject *o)¶ Décrémente le compteur de références de l'objet o. L'objet peut être
NULL
, dans ce cas la macro n'a pas d'effet. Dans le cas contraire le comportement est identique àPy_DECREF()
et les mêmes avertissements sont de rigueur.
-
void
Py_CLEAR
(PyObject *o)¶ Décrémente le compteur de références de l'objet o. L'objet peut être
NULL
, dans ce cas la macro n'a pas d'effet. Dans le cas contraire le comportement est identique àPy_DECREF()
, puis l'argument est mis àNULL
. L'avertissement au sujet de l'objet passé en argument àPy_DECREF()
ne s'applique pas car la macro utilise une variable temporaire et met l'objet àNULL
avant de décrémenter le compteur de références.Il est recommandé d'utiliser cette macro lorsqu'on décrémente le compteur de référence d'un objet qui peut être parcouru par le ramasse-miette.
The following functions are for runtime dynamic embedding of Python:
Py_IncRef(PyObject *o)
, Py_DecRef(PyObject *o)
. They are
simply exported function versions of Py_XINCREF()
and
Py_XDECREF()
, respectively.
Les fonctions ou macros suivantes doivent être uniquement utilisées au sein de l'interpréteur et ne font pas partie de l'API publique : _Py_Dealloc()
, _Py_ForgetReference()
, _Py_NewReference()
, ainsi que la variable globale _Py_RefTotal
.