弱い参照オブジェクト
Pythonは、ファーストクラスオブジェクトとして弱参照をサポートしています。 弱参照を直接実装する2つの特定のオブジェクトタイプがあります。 1つ目は単純な参照オブジェクトであり、2つ目は元のオブジェクトのプロキシとして可能な限り機能します。
- int PyWeakref_Check(ob)
- ob が参照オブジェクトまたはプロキシオブジェクトの場合、trueを返します。 この関数は常に成功します。
- int PyWeakref_CheckRef(ob)
- ob が参照オブジェクトの場合はtrueを返します。 この関数は常に成功します。
- int PyWeakref_CheckProxy(ob)
- ob がプロキシオブジェクトの場合はtrueを返します。 この関数は常に成功します。
- オブジェクト ob の弱参照オブジェクトを返します。 これは常に新しい参照を返しますが、新しいオブジェクトを作成することは保証されていません。 既存の参照オブジェクトが返される場合があります。 2番目のパラメーター callback は、 ob がガベージコレクションされたときに通知を受け取る呼び出し可能なオブジェクトにすることができます。 弱参照オブジェクト自体になる単一のパラメーターを受け入れる必要があります。 コールバックは、
None
またはNULL
の場合もあります。 ob が弱く参照可能なオブジェクトでない場合、または callback が呼び出し可能でない場合、None
、またはNULL
は、NULL
そして TypeError を発生させます。
- オブジェクト ob の弱参照プロキシオブジェクトを返します。 これは常に新しい参照を返しますが、新しいオブジェクトを作成することは保証されていません。 既存のプロキシオブジェクトが返される場合があります。 2番目のパラメーター callback は、 ob がガベージコレクションされたときに通知を受け取る呼び出し可能なオブジェクトにすることができます。 弱参照オブジェクト自体になる単一のパラメーターを受け入れる必要があります。 コールバックは、
None
またはNULL
の場合もあります。 ob が弱く参照可能なオブジェクトでない場合、または callback が呼び出し可能でない場合、None
、またはNULL
は、NULL
そして TypeError を発生させます。
- PyObject *PyWeakref_GetObject(PyObject *ref)
弱参照 ref から参照されたオブジェクトを返します。 指示対象がもう生きていない場合は、
Py_None
を返します。ノート
この関数は、借用参照を参照オブジェクトに返します。 つまり、借用した参照を最後に使用する前にオブジェクトを破棄できない場合を除いて、オブジェクトに対して常に Py_INCREF()を呼び出す必要があります。
- PyWeakref_GetObject()に似ていますが、エラーチェックを行わないマクロとして実装されています。