7.5.9 弱参照オブジェクト (weak reference object)

Python は 弱参照 を第一級オブジェクト (first-class object) としてサポートします。弱参照を直接実装する二種類の固有のオブジェクト 型があります。第一は単純な参照オブジェクトで、第二はオリジナルの オブジェクトに対して可能な限りプロキシとして振舞うオブジェクトです。

int PyWeakref_Check(ob)
ob が参照オブジェクトかプロキシオブジェクトの場合に真を返します。 バージョン 2.2 で 新たに追加 された仕様です。

int PyWeakref_CheckRef(ob)
ob が参照オブジェクトの場合に真を返します。 バージョン 2.2 で 新たに追加 された仕様です。

int PyWeakref_CheckProxy(ob)
ob がプロキシオブジェクトの場合に真を返します。 バージョン 2.2 で 新たに追加 された仕様です。

PyObject* PyWeakref_NewRef(PyObject *ob, PyObject *callback)
戻り値: 新たな参照.
ob に対する弱参照オブジェクトを返します。この関数は常に 新たな参照を返しますが、必ずしも新たなオブジェクトを作る保証は ありません; 既存の参照オブジェクトが返されることもあります。 第二のパラメタ callback は呼び出し可能オブジェクトで、 ob がガーベジコレクションされた際に通知を受け取ります; callback は弱参照オブジェクト自体を単一のパラメタとして 受け取ります。callbackNoneNULL にしても かまいません。 ob が弱参照できないオブジェクトの場合や、 callback が呼び出し可能オブジェクト、NoneNULL のいずれでもない場合は、NULL を返してTypeError を送出します。 バージョン 2.2 で 新たに追加 された仕様です。

PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
戻り値: 新たな参照.
ob に対する弱参照プロキシオブジェクトを返します。この関数は常に 新たな参照を返しますが、必ずしも新たなオブジェクトを作る保証は ありません; 既存の参照オブジェクトが返されることもあります。 第二のパラメタ callback は呼び出し可能オブジェクトで、 ob がガーベジコレクションされた際に通知を受け取ります; callback は弱参照オブジェクト自体を単一のパラメタとして 受け取ります。callbackNoneNULL にしても かまいません。 ob が弱参照できないオブジェクトの場合や、 callback が呼び出し可能オブジェクト、NoneNULL のいずれでもない場合は、NULL を返してTypeError を送出します。 バージョン 2.2 で 新たに追加 された仕様です。

PyObject* PyWeakref_GetObject(PyObject *ref)
戻り値: 借りた参照.
弱参照 ref が参照しているオブジェクトを返します。 被参照オブジェクトがすでに存続していない場合、 None を 返します。 バージョン 2.2 で 新たに追加 された仕様です。

PyObject* PyWeakref_GET_OBJECT(PyObject *ref)
戻り値: 借りた参照.
PyWeakref_GetObject() に似ていますが、マクロで実装 されていて、エラーチェックを行いません。 バージョン 2.2 で 新たに追加 された仕様です。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。