Objetos 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 True se ob for um objeto de referência ou proxy.
-
int
PyWeakref_CheckRef(ob)¶ Retornar True se ob for um objeto de referência.
-
int
PyWeakref_CheckProxy(ob)¶ Retornar True se ob for um objeto proxy.
-
PyObject*
PyWeakref_NewRef(PyObject *ob, PyObject *callback)¶ - Return value: New reference.
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
NoneouNULL. Se ob não for um objeto fracamente referenciável, ou se callback não for um chamável,None, ouNULL, isso retornaráNULLe levantará aTypeError.
-
PyObject*
PyWeakref_NewProxy(PyObject *ob, PyObject *callback)¶ - Return value: New reference.
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
NoneouNULL. Se ob não for um objeto fracamente referenciável, ou se callback não for um chamável,None, ouNULL, isso retornaráNULLe levantará aTypeError.
-
PyObject*
PyWeakref_GetObject(PyObject *ref)¶ - Return value: Borrowed reference.
Retorna o objeto referenciado de uma referência fraca, ref. Se o referente não estiver mais em tempo real, retorna
Py_None.Nota
Esta função retorna referência emprestada ao objeto referenciado. Isso significa que você deve sempre chamar
Py_INCREF()no objeto, exceto se você souber que não pode ser destruído enquanto você ainda está usando.
-
PyObject*
PyWeakref_GET_OBJECT(PyObject *ref)¶ - Return value: Borrowed reference.
Semelhante a
PyWeakref_GetObject(), mas implementado como uma macro que não verifica erros.