是否有任何障碍妨碍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