弱参考对象¶
Python 支持 弱引用 作为一流的对象。有两种特定的对象类型直接实现弱引用。第一个是一个简单的引用对象,第二个尽可能充当原始对象的代理。
-
int PyWeakref_Check(ob)¶
如果满足以下条件,则返回TRUE ob 可以是引用对象,也可以是代理对象。此功能总是成功的。
-
int PyWeakref_CheckRef(ob)¶
如果满足以下条件,则返回TRUE ob 是引用对象。此功能总是成功的。
-
int PyWeakref_CheckProxy(ob)¶
如果满足以下条件,则返回TRUE ob 是代理对象。此功能总是成功的。
-
PyObject *PyWeakref_NewRef(PyObject *ob, PyObject *callback)¶
- Return value: New reference.
返回对象的弱引用对象 ob . 这将始终返回新的引用,但不保证创建新的对象;可能会返回现有的引用对象。第二个参数, 回调 ,可以是可调用对象,当 ob 是垃圾收集的;它应该接受单个参数,这将是弱引用对象本身。 回调 也可能是
None
或NULL
. 如果 ob 不是弱可引用对象,或者如果 回调 不可调用,None
或NULL
,这将返回NULL
并提高TypeError
.
-
PyObject *PyWeakref_NewProxy(PyObject *ob, PyObject *callback)¶
- Return value: New reference.
返回对象的弱引用代理对象 ob . 这将始终返回新引用,但不保证创建新对象;可能会返回现有代理对象。第二个参数, 回调 ,可以是可调用对象,当 ob 是垃圾收集的;它应该接受单个参数,这将是弱引用对象本身。 回调 也可能是
None
或NULL
. 如果 ob 不是弱可引用对象,或者如果 回调 不可调用,None
或NULL
,这将返回NULL
并提高TypeError
.
-
PyObject *PyWeakref_GetObject(PyObject *ref)¶
- Return value: Borrowed reference.
从弱引用返回被引用对象, ref . 如果引用不再有效,则返回
Py_None
.注解
此函数返回一个 borrowed reference 添加到被引用的对象。这意味着您应该始终调用
Py_INCREF()
对象上,除非在上次使用借用的引用之前无法销毁该对象。
-
PyObject *PyWeakref_GET_OBJECT(PyObject *ref)¶
- Return value: Borrowed reference.
类似
PyWeakref_GetObject()
,但实现为不进行错误检查的宏。