弱引用對象?
Python 支持 “弱引用” 作為一類(lèi)對象。具體來(lái)說(shuō),有兩種直接實(shí)現弱引用的對象。第一種就是簡(jiǎn)單的引用對象,第二種盡可能地作用為一個(gè)原對象的代理。
-
int PyWeakref_Check(ob)?
如果 ob 是一個(gè)引用或代理對象則返回真值。 此函數總是會(huì )成功執行。
-
int PyWeakref_CheckRef(ob)?
如果 ob 是一個(gè)引用對象則返回真值。 此函數總是會(huì )成功執行。
-
int PyWeakref_CheckProxy(ob)?
如果 ob 是一個(gè)代理對象則返回真值。 此函數總是會(huì )成功執行。
-
PyObject *PyWeakref_NewRef(PyObject *ob, PyObject *callback)?
- Return value: New reference. Part of the Stable ABI.
返回對象 ob 的一個(gè)弱引用對象。 該函數總是會(huì )返回一個(gè)新引用,但不保證創(chuàng )建一個(gè)新的對象;它有可能返回一個(gè)現有的引用對象。 第二個(gè)形參 callback 為一個(gè)可調用對象,它會(huì )在 ob 被作為垃圾回收時(shí)接收通知;它應該接受一個(gè)單獨形參,即弱引用對象本身。 callback 也可以為
None
或NULL
。 如果 ob 不是一個(gè)弱引用對象,或者如果 callback 不是可調用對象,None
或NULL
,該函數將返回NULL
并且引發(fā)TypeError
。
-
PyObject *PyWeakref_NewProxy(PyObject *ob, PyObject *callback)?
- Return value: New reference. Part of the Stable ABI.
返回對象 ob 的一個(gè)弱引用代理對象。 該函數將總是返回一個(gè)新的引用,但不保證創(chuàng )建一個(gè)新的對象;它有可能返回一個(gè)現有的代理對象。 第二個(gè)形參 callback 為一個(gè)可調用對象,它會(huì )在 ob 被作為垃圾回收時(shí)接收通知;它應該接受一個(gè)單獨形參,即弱引用對象本身。 callback 也可以為
None
或NULL
。 如果 ob 不是一個(gè)弱引用對象,或者如果 callback 不是可調用對象,None
或NULL
,該函數將返回NULL
并且引發(fā)TypeError
。
-
PyObject *PyWeakref_GetObject(PyObject *ref)?
- Return value: Borrowed reference. Part of the Stable ABI.
返回弱引用對象 ref 的被引用對象。如果被引用對象不再存在,則返回
Py_None
。備注
該函數返回被引用對象的一個(gè) borrowed reference。 這意味著(zhù)應該總是在該對象上調用
Py_INCREF()
,除非是當它在借入引用的最后一次被使用之前無(wú)法被銷(xiāo)毀的時(shí)候。
-
PyObject *PyWeakref_GET_OBJECT(PyObject *ref)?
- Return value: Borrowed reference.
Similar to
PyWeakref_GetObject()
, but does no error checking.