gpt4 book ai didi

python - 如何调试未调用的 __del__()

转载 作者:太空宇宙 更新时间:2023-11-03 12:34:46 24 4
gpt4 key购买 nike

我使用 __del__() 编写警告日志,以防对象在错误的内部状态下被删除(请不要为此生气)。

我尝试对其进行测试,但尽管我在测试中使用了 del my_object,但似乎并未调用 __del__()

__del__()'s reference警告可能发生这种情况的 3 种情况,但没有提供有关如何调试它们的线索。

那么...我该如何调试它?

最佳答案

如果在您直接调用 del myObject 时未调用 __del__,则至少存在一个对 myObject 的其他未完成引用。我猜你已经把它塞进了一个列表或字典或集合(或者可能是一个内存缓存),它复制对象,只是保存对原始对象的第二个引用。甚至在做:

myObject = MyObjectClassWith__del__()
del myObject

可能不一定调用 __del__,如果类的 __init__ 方法或 __new__ 方法将新实例保存到某个类级缓存或结构中.

底线:通过检查您的代码或使用其他答案中发布的 weakref 或 gc 方法检查其他引用。

关于python - 如何调试未调用的 __del__(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7240171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com