私が理解しているところから、Python 3は、少なくとも1つの非弱参照がオブジェクトを指している限り、オブジェクトのメモリが解放されないことを保証するものではありません。弱参照はオブジェクトを指していませんが、weakrefはNoneに評価できませんか?
この言語は弱い参照について他の保証を行っていますか?特に、何らかのオブジェクトを指し示す弱参照wr
を作成したとします。後で、そのオブジェクトに対する非弱参照がすべて破棄されたとします。その時点でwr
がNoneに評価されるか、それともしばらくの間元のオブジェクトに評価されることが保証されていますか?
言語保証以外に、weakrefに関する興味深い実装動作はありますか?
この動作の正確なニュアンスに依存するトリッキーなコードを書くつもりはないと思いますが、私は個人的に 'weakref' FWIWを必要としませんでした。 –
私はPyQtでweakkeydictionaryとweakvaluedictionaryを使用して、ウィジェットをガベージコレクションによって破壊されないようにしています。しかし...私は決してその妥当性に頼ることもありません。非弱点がゼロに達する点を超えて、弱点が有効なままであることを期待するべきではありません。 – jdi
@KarlKnechtel:私は保証されていないものに応じて避けたい。実装固有のものではなく、言語によって保証されていれば、ニュアンスに頼っても構いません。 – max