弱參照物件

Python supports weak references as first-class objects. There are two specific object types which directly implement weak references. The first is a simple reference object, and the second acts as a proxy for the original object as much as it can.

int PyWeakref_Check(PyObject *ob)

Return non-zero if ob is either a reference or proxy object. This function always succeeds.

int PyWeakref_CheckRef(PyObject *ob)

Return non-zero if ob is a reference object or a subclass of the reference type. This function always succeeds.

int PyWeakref_CheckRefExact(PyObject *ob)

Return non-zero if ob is a reference object, but not a subclass of the reference type. This function always succeeds.

int PyWeakref_CheckProxy(PyObject *ob)

Return non-zero if ob is a proxy object. This function always succeeds.

PyObject *PyWeakref_NewRef(PyObject *ob, PyObject *callback)
回傳值:新的參照。穩定 ABI 的一部分.

Return a weak reference object for the object ob. This will always return a new reference, but is not guaranteed to create a new object; an existing reference object may be returned. The second parameter, callback, can be a callable object that receives notification when ob is garbage collected; it should accept a single parameter, which will be the weak reference object itself. callback may also be None or NULL. If ob is not a weakly referenceable object, or if callback is not callable, None, or NULL, this will return NULL and raise TypeError.

也參考

PyType_SUPPORTS_WEAKREFS() for checking if ob is weakly referenceable.

PyObject *PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
回傳值:新的參照。穩定 ABI 的一部分.

Return a weak reference proxy object for the object ob. This will always return a new reference, but is not guaranteed to create a new object; an existing proxy object may be returned. The second parameter, callback, can be a callable object that receives notification when ob is garbage collected; it should accept a single parameter, which will be the weak reference object itself. callback may also be None or NULL. If ob is not a weakly referenceable object, or if callback is not callable, None, or NULL, this will return NULL and raise TypeError.

也參考

PyType_SUPPORTS_WEAKREFS() for checking if ob is weakly referenceable.

int PyWeakref_GetRef(PyObject *ref, PyObject **pobj)
穩定 ABI 的一部分 自 3.13 版本開始.

Get a strong reference to the referenced object from a weak reference, ref, into *pobj.

  • On success, set *pobj to a new strong reference to the referenced object and return 1.