弱引用对象 – 具体对象层(Python教程)(参考资料)
弱引用对象
Python支持weak references作为第一类对象。有两种特定的对象类型直接实现弱引用。第一个是简单的参考对象,第二个作为原始对象的代理,尽可能地
- 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
.注意
此函数返回借用的参考对于引用的对象。这意味着你应该总是在objectexcept上调用
Py_INCREF()
,如果你知道在你还在使用时它不能被销毁的话.
- PyObject*
PyWeakref_GET_OBJECT
( PyObject *ref) - Return value: Borrowed reference.
类似于
PyWeakref_GetObject()
,但实现为一个无误检查的宏.
评论被关闭。