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__方法是当垃圾回收机制回收这个对象的时候调用的。

posted on 2018-02-23 18:20  nicolas_Z  阅读(163)  评论(0)    收藏  举报

导航