弱参照オブジェクト—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.9/c-api/weakref
移動先:案内検索

弱い参照オブジェクト

Pythonは、ファーストクラスオブジェクトとして弱参照をサポートしています。 弱参照を直接実装する2つの特定のオブジェクトタイプがあります。 1つ目は単純な参照オブジェクトであり、2つ目は元のオブジェクトのプロキシとして可能な限り機能します。

int PyWeakref_Check(ob)
ob が参照オブジェクトまたはプロキシオブジェクトの場合、trueを返します。 この関数は常に成功します。
int PyWeakref_CheckRef(ob)
ob が参照オブジェクトの場合はtrueを返します。 この関数は常に成功します。
int PyWeakref_CheckProxy(ob)
ob がプロキシオブジェクトの場合はtrueを返します。 この関数は常に成功します。
PyObject *PyWeakref_NewRef(PyObject *ob, PyObject *callback)
オブジェクト ob の弱参照オブジェクトを返します。 これは常に新しい参照を返しますが、新しいオブジェクトを作成することは保証されていません。 既存の参照オブジェクトが返される場合があります。 2番目のパラメーター callback は、 ob がガベージコレクションされたときに通知を受け取る呼び出し可能なオブジェクトにすることができます。 弱参照オブジェクト自体になる単一のパラメーターを受け入れる必要があります。 コールバックは、NoneまたはNULLの場合もあります。 ob が弱く参照可能なオブジェクトでない場合、または callback が呼び出し可能でない場合、None、またはNULLは、NULLそして TypeError を発生させます。
PyObject *PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
オブジェクト ob の弱参照プロキシオブジェクトを返します。 これは常に新しい参照を返しますが、新しいオブジェクトを作成することは保証されていません。 既存のプロキシオブジェクトが返される場合があります。 2番目のパラメーター callback は、 ob がガベージコレクションされたときに通知を受け取る呼び出し可能なオブジェクトにすることができます。 弱参照オブジェクト自体になる単一のパラメーターを受け入れる必要があります。 コールバックは、NoneまたはNULLの場合もあります。 ob が弱く参照可能なオブジェクトでない場合、または callback が呼び出し可能でない場合、None、またはNULLは、NULLそして TypeError を発生させます。
PyObject *PyWeakref_GetObject(PyObject *ref)

弱参照 ref から参照されたオブジェクトを返します。 指示対象がもう生きていない場合は、Py_Noneを返します。

ノート

この関数は、借用参照を参照オブジェクトに返します。 つまり、オブジェクトを使用している間は破棄できないことがわかっている場合を除いて、オブジェクトに対して常に Py_INCREF()を呼び出す必要があります。

PyObject *PyWeakref_GET_OBJECT(PyObject *ref)
PyWeakref_GetObject()に似ていますが、エラーチェックを行わないマクロとして実装されています。