Python学习之路(5)——析构方法del
上一篇blog介绍了Python类的构造方法__init__和__new__,这里再介绍一下Python类的析构方法__del__。
在很久以前,我一直认为执行了del语句删除一个对象,就一定是调用了类的析构方法__del__,然后并不是这样。
这里先用一个例子,证明一下:
class Person():
def __init__(self):
print("我出生了!")
def __del__(self):
print("我挂了!")
print("------------------")
a1 = Person()
print("------------------")
a2 = a1
print("------------------")
a3 = a2
print("------------------")
del a1
print("------------------")
del a2
print("------------------")
del a3
执行结果是怎么样的呢?
------------------ 我出生了! ------------------ ------------------ ------------------ ------------------ ------------------ 我挂了!
可以看到,只有在最后一次的del语句被调用后,__del__方法才被调用到。
因此,并非del x就相当于自动调用x.__del__(),__del__方法是当垃圾回收机制回收这个对象的时候调用的。
浙公网安备 33010602011771号