是否有任何障碍阻止weakref
做所有__del__
可以做的事情,但提供更强的保证(例如,finalize
保证在解释器退出之前将进行调用,并且调用顺序是明确定义的等)?
似乎在遥远的过去曾经认为weakref
最终会导致从语言中删除__del__
。
是什么阻止了这种情况发生?
似乎__del__
用例很少, 我所知道的所有用例都可以使用weakref
回调或weakref.finalize
至少同样好(通常更好)地工作。
更新:
随着PEP 442的出现,__del__
的行为得到了显著改进,同时也有@ gz和@ user2357112提出了对weakref
的担忧。我想知道语言是否普遍朝着使__del__
更加可靠的方向发展,还是朝着使用weakref
而不是__del__
的方向发展,或者两者都有。
python-list
上发布这个问题,希望能引起一些核心开发者的注意。 - Dimitris Fasarakis Hilliardtuple
的子类,您将无法对其进行弱引用。 - user2357112__del__
方法?或者有一些解决方法(例如创建一个仅与生成器相关联的单独对象,该对象将作为weakref.finalize
的触发器)? - max