Objetos de referência fraca

O Python oferece suporte a referências fracas como objetos de primeira classe. Existem dois tipos de objetos específicos que implementam diretamente referências fracas. O primeiro é um objeto de referência simples, e o segundo atua como um intermediário ao objeto original tanto quanto ele pode.

int PyWeakref_Check(ob)

Retorna verdadeiro se ob for um objeto referência ou um objeto intermediário. Esta função sempre tem sucesso.

int PyWeakref_CheckRef(ob)

Retorna verdadeiro se ob for um objeto referência. Esta função sempre tem sucesso.

int PyWeakref_CheckProxy(ob)

Retorna verdadeiro se ob for um objeto intermediário. Esta função sempre tem sucesso.

PyObject *PyWeakref_NewRef(PyObject *ob, PyObject *callback)
Return value: New reference. Part of the Stable ABI.

Retorna um objeto de referência fraco para o objeto ob. Isso sempre retornará uma nova referência, mas não é garantido para criar um novo objeto; um objeto de referência existente pode ser retornado. O segundo parâmetro, callback, pode ser um objeto chamável que recebe notificação quando ob for lixo coletado; ele deve aceitar um único parâmetro, que será o objeto de referência fraco propriamente dito. callback também pode ser None ou NULL. Se ob não for um objeto fracamente referenciável, ou se callback não for um chamável, None, ou NULL, isso retornará NULL e levantará a TypeError.

PyObject *PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
Return value: New reference. Part of the Stable ABI.

Retorna um objeto de proxy de referência fraco para o objeto ob. Isso sempre retornará uma nova referência, mas não é garantido para criar um novo objeto; um objeto de proxy existente pode ser retornado. O segundo parâmetro, callback, pode ser um objeto chamável que recebe notificação quando ob for lixo coletado; ele deve aceitar um único parâmetro, que será o objeto de referência fraco propriamente dito. callback também pode ser None ou NULL. Se ob não for um objeto fracamente referenciável, ou se callback não for um chamável, None, ou NULL, isso retornará NULL e levantará a TypeError.

PyObject *PyWeakref_GetObject(PyObject *ref)
Return value: Borrowed reference. Part of the Stable ABI.

Retorna o objeto referenciado de uma referência fraca, ref. Se o referente não estiver mais em tempo real, retorna Py_None.

Nota

This function returns a borrowed reference to the referenced object. This means that you should always call Py_INCREF() on the object except when it cannot be destroyed before the last usage of the borrowed reference.

PyObject *PyWeakref_GET_OBJECT(PyObject *ref)
Return value: Borrowed reference.

Semelhante a PyWeakref_GetObject(), mas implementado como uma macro que não verifica erros.