析构函数__del__
class A: pass a = A() del a # 删除对象 print(a)
class A: def __del__(self): print('执行我了!') a = A() del a # del关键字会调用__del__,然后再删除a对象 print(a)
import time class A: def __del__(self): print('执行我了!') a = A() time.sleep(3)
打印结果:
执行我了!
为什么我们没有调用__del__,它还是执行了呢?

当脚本运行完毕后,它会清理所有的对象和变量。当然有一个例外,如果对象或者变量被其他位置引用,那么就不会被清理。
python通过一个计数器来保存引用数量的。当计数器为0时,表示没有位置引用,它也就没有存在的价值了,所以可以直接
删除了。
python也是通过调用__del__来删除相关对象的。
因此,脚本结束时,自动调用了__del__方法。

浙公网安备 33010602011771号