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