析构函数__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__方法。

 

posted @ 2019-11-06 11:06  道霖  阅读(271)  评论(0)    收藏  举报