Weak Reference Objects¶
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)¶ - 返回值:新引用。
返回对象ob的弱引用对象。这将总是返回一个新的引用,但不能保证创建一个新的对象;可以返回现有参考对象。第二个参数callback可以是当ob被垃圾回收时接收通知的可调用对象;它应该接受一个单一的参数,这将是弱引用对象本身。回调也可以是
None
或NULL。如果ob不是弱引用对象,或回调不可调用,None
或NULL这将返回NULL和引发TypeError
。
- PyObject*
PyWeakref_NewProxy
(PyObject *ob, PyObject *callback)¶ - 返回值:新引用。
返回对象ob的弱引用代理对象。这将总是返回一个新的引用,但不能保证创建一个新的对象;可以返回现有的代理对象。第二个参数callback可以是当ob被垃圾回收时接收通知的可调用对象;它应该接受一个单一的参数,这将是弱引用对象本身。回调也可以是
None
或NULL。如果ob不是弱引用对象,或回调不可调用,None
或NULL这将返回NULL和引发TypeError
。
- PyObject*
PyWeakref_GetObject
(PyObject *ref)¶ - 返回值:借用引用。
从弱引用ref返回引用的对象。如果指示物不再存在,则返回
Py_None
。注意
此函数将借用引用返回到引用的对象。这意味着你应该总是调用
Py_INCREF()
对象,除非你知道它不能被销毁,而你仍在使用它。
- PyObject*
PyWeakref_GET_OBJECT
(PyObject *ref)¶ - 返回值:借用引用。
类似于
PyWeakref_GetObject()
,但实现为不进行错误检查的宏。