上一篇文章為:→3.7.2保護(hù)對(duì)象的屬性
__del__()
方法
創(chuàng)建對(duì)象后,python解釋器默認(rèn)調(diào)用__init__()
方法樱溉;
當(dāng)刪除一個(gè)對(duì)象時(shí),python解釋器也會(huì)默認(rèn)調(diào)用一個(gè)方法纬凤,這個(gè)方法為__del__()
方法
import time
class Animal(object):
# 初始化方法
# 創(chuàng)建完對(duì)象后會(huì)自動(dòng)被調(diào)用
def __init__(self, name):
print('__init__方法被調(diào)用')
self.__name = name
# 析構(gòu)方法
# 當(dāng)對(duì)象被刪除時(shí)福贞,會(huì)自動(dòng)被調(diào)用
def __del__(self):
print("__del__方法被調(diào)用")
print("%s對(duì)象馬上被干掉了..."%self.__name)
# 創(chuàng)建對(duì)象
dog = Animal("哈皮狗")
# 刪除對(duì)象
del dog
cat = Animal("波斯貓")
cat2 = cat
cat3 = cat
print("---馬上 刪除cat對(duì)象")
del cat
print("---馬上 刪除cat2對(duì)象")
del cat2
print("---馬上 刪除cat3對(duì)象")
del cat3
print("程序2秒鐘后結(jié)束")
time.sleep(2)
結(jié)果:
day08_python面向?qū)ο?2-01.png
總結(jié)
- 當(dāng)有1個(gè)變量保存了對(duì)象的引用時(shí),此對(duì)象的引用計(jì)數(shù)就會(huì)加1
- 當(dāng)使用del刪除變量指向的對(duì)象時(shí)停士,如果對(duì)象的引用計(jì)數(shù)不會(huì)1挖帘,比如3,那么此時(shí)只會(huì)讓這個(gè)引用計(jì)數(shù)減1恋技,即變?yōu)?肠套,當(dāng)再次調(diào)用del時(shí),變?yōu)?猖任,如果再調(diào)用1次del你稚,此時(shí)會(huì)真的把對(duì)象進(jìn)行刪除