弱参考对象

Python 支持弱引用作为一流对象。有两种直接实现弱引用的特定对象类型。第一个是简单的引用对象,第二个则尽可能地充当原始对象的代理。

  • int PyWeakref_Check(ob)
    • 如果* ob *是引用或代理对象,则返回 true。

2.2 版中的新Function。

  • int PyWeakref_CheckRef(ob)
    • 如果* ob *是参考对象,则返回 true。

2.2 版中的新Function。

  • int PyWeakref_CheckProxy(ob)
    • 如果* ob *是代理对象,则返回 true。

2.2 版中的新Function。

返回对象* ob 的弱引用对象。这将始终返回新的引用,但不能保证创建新的对象;现有参考对象可能会返回。第二个参数 callback 可以是一个可调用对象,当 ob *被垃圾回收时,该对象将接收通知。它应该接受一个参数,即弱引用对象本身。 * callback 也可以是None NULL 。如果 ob 不是弱引用对象,或者 callback 是不可调用的None NULL ,则将返回 NULL *并引发TypeError

2.2 版中的新Function。

返回对象* ob 的弱引用代理对象。这将始终返回新的引用,但不能保证创建新的对象;现有的代理对象可能会返回。第二个参数 callback 可以是一个可调用对象,当 ob *被垃圾回收时,该对象将接收通知。它应该接受一个参数,即弱引用对象本身。 * callback 也可以是None NULL 。如果 ob 不是弱引用对象,或者 callback 是不可调用的None NULL ,则将返回 NULL *并引发TypeError

2.2 版中的新Function。

  • PyObject * PyWeakref_GetObject(PyObject ** ref *)
    • *返回值:借用参考。

从弱引用* ref *返回引用的对象。如果引用对象不再有效,则返回Py_None

2.2 版中的新Function。

Warning

该函数返回被引用对象的“借用引用”。这意味着您应该始终在对象上调用Py_INCREF(),除非您知道在使用它时无法销毁它。

  • PyObject * PyWeakref_GET_OBJECT(PyObject ** ref *)
    • *返回值:借用参考。

PyWeakref_GetObject()相似,但实现为不进行错误检查的宏。

2.2 版中的新Function。