在这个例子中:
class Foo(object):
def __del__(self):
print "Foo died"
class Bar(object):
def __init__(self):
self.foo = Foo()
self.baz = Baz(self)
class Baz(object):
def __init__(self, bar):
self.bar = bar
b = Bar()
我希望尽管 Bar 和 Baz 之间存在循环,但仍会调用 Foo 析构函数,因为 Foo 没有对收集它们的任何 bar 或 baz 的引用,并且在收集 Foo 之前减少引用计数应该是完全安全的。为什么 python 不这样做呢?如果可以防止析构函数被其他类的完全不相关的动作调用,那么析构函数怎么可能有用呢?