del 命令的效果

使用 del v 从范围中删除变量名称,或使用 del v[item]del[i:j] 从集合中删除对象,或使用 del v.name 删除属性,或以任何其他方式删除对象的引用,都不会触发任何析构函数调用或任何内存自由自在。仅当对象的引用计数达到零时才会销毁对象。

>>> import gc
>>> gc.disable()  # disable garbage collector
>>> class Track:
        def __init__(self):
            print("Initialized")
        def __del__(self):
            print("Destructed")
>>> def bar():
    return Track()
>>> t = bar()
Initialized
>>> another_t = t  # assign another reference
>>> print("...")
...
>>> del t          # not destructed yet - another_t still refers to it
>>> del another_t  # final reference gone, object is destructed
Destructed