当Python解释器关闭时,我对对象发生了什么感到困惑.如果我写一些类似的代码
class MyClass(object):
def __del__(self):
print "I'm going away"
o = MyClass()
Run Code Online (Sandbox Code Playgroud)
并运行它,我会得到这个
I'm going away
Run Code Online (Sandbox Code Playgroud)
我的理解是,当解释器关闭时,它将删除对创建对象的所有引用,__del__()
如果指定了这些对象将运行(因为它们的引用计数为0).
我的困惑是因为:
__del__()
我看到的文档It is not guaranteed that __del__() methods are called for objects that still exist when the interpreter exits.
并且它变得有点复杂,他们是否说由于某些循环依赖性而无法保证可以运行它或者它不能保证?是谁决定的?所以我的问题是:
__del__
我上面的例子guaranteed
当我没有参考周期时,为什么不调用它python ×1