Objetos de referencia débil¶
Python soporta referencias débiles como objetos de primera clase. Hay dos tipos de objetos específicos que implementan directamente referencias débiles. El primero es un objeto con referencia simple, y el segundo actúa como un proxy del objeto original tanto como pueda.
-
int
PyWeakref_Check
(ob)¶ Retorna verdadero (true) si ob es una referencia o un objeto proxy. Esta función siempre finaliza con éxito.
-
int
PyWeakref_CheckRef
(ob)¶ Retorna verdadero (true) si ob es un objeto de referencia. Esta función siempre finaliza con éxito.
-
int
PyWeakref_CheckProxy
(ob)¶ Retorna verdadero (true) si ob es un objeto proxy. Esta función siempre finaliza con éxito.
-
PyObject*
PyWeakref_NewRef
(PyObject *ob, PyObject *callback)¶ - Return value: New reference.
Retorna un objeto de referencia débil para el objeto ob. Esto siempre retornará una nueva referencia, pero no garantiza la creación de un objeto nuevo; un objeto de referencia ya existente puede ser retornado. El segundo parámetro, callback, puede ser un objeto invocable que recibe una notificación cuando ob es recolectado como basura; debe aceptar un solo parámetro, el cual será el mismo objeto de referencia débil. callback también puede ser
None
oNULL
. Si ob no es un objeto que puede ser referido de forma débil, o si callback no es invocable,None
, oNULL
, esto retornaráNULL
y causará unTypeError
.
-
PyObject*
PyWeakref_NewProxy
(PyObject *ob, PyObject *callback)¶ - Return value: New reference.
Retorna un objeto proxy de referencia débil para el objeto ob. Esto siempre retornará una nueva referencia, pero no garantiza la creación de un objeto nuevo; un objeto proxy de referencia ya existente puede ser retornado. El segundo parámetro, callback, puede ser un objeto invocable que recibe una notificación cuando ob es recolectado como basura; debe aceptar un solo parámetro, el cual será el mismo objeto de referencia débil. callback también puede ser
None
oNULL
. Si ob no es un objeto que puede ser referido de forma débil, o si callback no es invocable,None
, oNULL
, esto retornaráNULL
y causará unTypeError
.
-
PyObject*
PyWeakref_GetObject
(PyObject *ref)¶ - Return value: Borrowed reference.
Retorna el objeto referenciado desde una referencia débil, ref. Si el referente no está vivo, retornará
Py_None
.Nota
Esta función retorna una referencia prestada al objeto referenciado. Esto significa que siempre debes llamar
Py_INCREF()
en el objeto excepto si sabes que no puede ser destruido mientras lo estés usando.
-
PyObject*
PyWeakref_GET_OBJECT
(PyObject *ref)¶ - Return value: Borrowed reference.
Similar a
PyWeakref_GetObject()
, pero implementado como un macro que no verifica errores.