是否有任何障礙妨礙weakref
做所有__del__
所做的一切,但有更強的保證(例如,finalize
保證在解釋器退出之前進行調用,並且調用順序已定義良好等)?`weakref`回調可以代替`__del__`嗎?
看來,在遙遠的過去it was thoughtweakref
最終將導致從語言中刪除__del__
。
是什麼阻止了這種情況發生?
似乎有few use cases for __del__
,我知道所有的人似乎至少工作(通常好得多)與weakref
回調或weakref.finalize
。
更新:
隨着PEP 442顯着提高的__del__
的行爲,並與weakref
由@gz和@ user2357112提到的關切,我想知道如果語言通常是朝着使__del__
更可靠的移動,或對使用weakref
而不是__del__
或兩者。
*「是什麼阻止了這種情況的發生?」*這是一個很*很少能夠回答的問題。我建議你在'python-list'上發佈這個文件,希望得到一些核心開發者的關注。 –
Python的weakref支持非常糟糕,所以你不能將weakrefs引用到很多你想weakref的對象類型。這對你自己編寫的類型通常無關緊要,但是如果你的類型像'tuple'子類一樣,你不能弱化它。 – user2357112
此外,weakref回調無法訪問指示對象,因此需要更仔細的設計。 – user2357112