##
7.5.8 弱参照オブジェクト (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 は弱参照オブジェクト自体を単一のパラメタとして 受け取ります。callback は `None` や `NULL`にしても かまいません。 ob が弱参照できないオブジェクトの場合や、 callback が呼び出し可能オブジェクト、`None`、`NULL` のいずれでもない場合は、`NULL` を返して`TypeError` を送出します。 バージョン2.2 以降で新規追加された 仕様です。

PyObject* `PyWeakref_NewProxy`( | PyObject *ob, PyObject *callback)

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

PyObject* `PyWeakref_GetObject`( | PyObject *ref)

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

PyObject* `PyWeakref_GET_OBJECT`( | PyObject *ref)

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