弱引用對象?

Python 支持 “弱引用” 作為一類對象。具體來說,有兩種直接實現(xiàn)弱引用的對象。第一種就是簡單的引用對象,第二種盡可能地作用為一個原對象的代理。

int PyWeakref_Check(ob)?

如果 ob 是一個引用或代理對象則返回真值。 此函數(shù)總是會成功執(zhí)行。

int PyWeakref_CheckRef(ob)?

如果 ob 是一個引用對象則返回真值。 此函數(shù)總是會成功執(zhí)行。

int PyWeakref_CheckProxy(ob)?

如果 ob 是一個代理對象則返回真值。 此函數(shù)總是會成功執(zhí)行。

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

返回對象 ob 的一個弱引用對象。 該函數(shù)總是會返回一個新引用,但不保證創(chuàng)建一個新的對象;它有可能返回一個現(xiàn)有的引用對象。 第二個形參 callback 為一個可調(diào)用對象,它會在 ob 被作為垃圾回收時接收通知;它應該接受一個單獨形參,即弱引用對象本身。 callback 也可以為 NoneNULL。 如果 ob 不是一個弱引用對象,或者如果 callback 不是可調(diào)用對象,NoneNULL,該函數(shù)將返回 NULL 并且引發(fā) TypeError。

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

返回對象 ob 的一個弱引用代理對象。 該函數(shù)將總是返回一個新的引用,但不保證創(chuàng)建一個新的對象;它有可能返回一個現(xiàn)有的代理對象。 第二個形參 callback 為一個可調(diào)用對象,它會在 ob 被作為垃圾回收時接收通知;它應該接受一個單獨形參,即弱引用對象本身。 callback 也可以為 NoneNULL。 如果 ob 不是一個弱引用對象,或者如果 callback 不是可調(diào)用對象,NoneNULL,該函數(shù)將返回 NULL 并且引發(fā) TypeError。

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

返回弱引用對象 ref 的被引用對象。如果被引用對象不再存在,則返回 Py_None。

備注

該函數(shù)返回被引用對象的一個 borrowed reference。 這意味著應該總是在該對象上調(diào)用 Py_INCREF(),除非是當它在借入引用的最后一次被使用之前無法被銷毀的時候。

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

Similar to PyWeakref_GetObject(), but does no error checking.