弱引用對象?
Python 支持 “弱引用” 作為一類對象。具體來說,有兩種直接實現弱引用的對象。第一種就是簡單的引用對象,第二種盡可能地作用為一個原對象的代理。
-
int
PyWeakref_Check(ob)? 如果 “ob” 是一個引用或者一個代理對象,則返回 true。
-
int
PyWeakref_CheckRef(ob)? 如果 “ob” 是一個引用,則返回 true。
-
int
PyWeakref_CheckProxy(ob)? 如果 “ob” 是一個代理對象,則返回 true。
-
PyObject*
PyWeakref_NewRef(PyObject?*ob, PyObject?*callback)? - Return value: New reference.
返回對象 ob 的一個弱引用對象。 該函數總是會返回一個新的引用,但不保證創建一個新的對象;它有可能返回一個現有的引用對象。 第二個形參 callback 為一個可調用對象,它會在 ob 被作為垃圾回收時接收通知;它應該接受一個單獨形參,即弱引用對象本身。 callback 也可以為
None或NULL。 如果 ob 不是一個弱引用對象,或者如果 callback 不是可調用對象,None或NULL,該函數將返回NULL并且引發TypeError。
-
PyObject*
PyWeakref_NewProxy(PyObject?*ob, PyObject?*callback)? - Return value: New reference.
返回對象 ob 的一個弱引用代理對象。 該函數將總是返回一個新的引用,但不保證創建一個新的對象;它有可能返回一個現有的代理對象。 第二個形參 callback 為一個可調用對象,它會在 ob 被作為垃圾回收時接收通知;它應該接受一個單獨形參,即弱引用對象本身。 callback 也可以為
None或NULL。 如果 ob 不是一個弱引用對象,或者如果 callback 不是可調用對象,None或NULL,該函數將返回NULL并且引發TypeError。
-
PyObject*
PyWeakref_GetObject(PyObject?*ref)? - Return value: Borrowed reference.
返回弱引用對象 ref 的被引用對象。如果被引用對象不再存在,則返回
Py_None。注解
該函數返回被引用對象的一個**借來的引用**。這意味著除非你很清楚在你使用期間這個對象不可能被銷毀,否則你應該始終對該對象調用
Py_INCREF()。
-
PyObject*
PyWeakref_GET_OBJECT(PyObject?*ref)? - Return value: Borrowed reference.
類似
PyWeakref_GetObject(),但實現為一個不做類型檢查的宏。
