この質問は、以前に尋ねた質問の拡張です: Python デリゲート パターン - 循環参照を回避する方法は? 返信を読んだ後、質問を明確にすることにしましたが、個別に投稿するように求められました.
ここに行きます:
- Python ドキュメント (以下に転載) の一節では、ガベージ コレクションが循環参照オブジェクトに対して保証されていないと述べています。ここで見つけた投稿は、同じことを示唆しています。しかし、私の以前の質問への回答は同意しません。それで、私はその箇所を誤解しましたか、それとも見逃した詳細がありますか?
- 質問に対する Alex Martelli の回答で述べられているように、弱い参照を使用していると思います。彼の返信で言及されている循環参照オブジェクトのガベージコレクションのオーバーヘッドを完全に回避できますか? もしそうなら、それはどのように機能しますか?
関連する Python ドキュメントは、Python のドキュメントからの次の箇所の競合を示唆しています。
CPython 実装の詳細: CPython は現在、循環的にリンクされたガベージの (オプションの) 遅延検出を伴う参照カウント スキームを使用しています。循環ガーベッジの収集の制御については、gc モジュールの資料を参照してください。他の実装では動作が異なり、CPython は変更される可能性があります。オブジェクトが到達不能になったときにオブジェクトの即時ファイナライズに依存しないでください (例: 常にファイルを閉じます)。
元の形式のパッセージはここにあります: http://docs.python.org/reference/datamodel.html太字の設定は私のものです。
返信ありがとうございます。