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 o NULL. Si ob no es un objeto que puede ser referido de forma débil, o si callback no es invocable, None, o NULL, esto retornará NULL y causará un TypeError.

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 o NULL. Si ob no es un objeto que puede ser referido de forma débil, o si callback no es invocable, None, o NULL, esto retornará NULL y causará un TypeError.

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.