1、主動刪除物件呼叫del 物件;程式執行結束後,python也會自動進行刪除其他的物件。
class animal:
def __del__(程式設計客棧self):
print("銷毀物件".format(self))
cat = animal()
cat2 = animal()
del cat2
print("程式結束")
2、如果重寫子類的del方法,則必須顯式呼叫父類的del方法,這樣才能保證在**子類物件時,其占用的資源(可能包含繼承自父類的部分資源)能被徹底釋放。
class animal:
def __del__(self):
print("呼叫父類 __del__() 方法")
程式設計客棧
class bird(animal):
def __del__(self):
# super(bird,self).__del__() #方法1:顯示呼叫父類的del方法
www.cppcns.com print("呼叫子類 __del__() 方法")
cat = bird()
#del cat #只能呼叫子類裡面的__del__
#super(bird,cat).__del__() #方法2:顯示調www.cppcns.com用父類的__del__
函式例項擴充套件:
#coding=utf-8
'''魔法方法,被__雙下劃線所包圍
在適當的時候自動被呼叫
'''#構造init、析構del
class rectangle:
def __init__(self,x,y):
self.x = x
self.y = y
print('構造')
'''del析構函式,並不是在del a物件的時候就會呼叫該析構函式
只有當該物件的引用計數為0時才會呼叫析構函式,**資源
析構函式被python的垃圾**器銷毀的時候呼叫ovwhx。當某乙個物件沒有被引用時,垃圾**器自動**資源,呼叫析構函式
'''def __del__(self):
print('析構')
def getperi(self):
return (self.x + self.y)*2
def getarea(self):
return self.x * self.y
if __name__ == '__main__':
rect = rectangle(3,4)
# a = rect.getarea()
# b = rect.getperi()
# print(a,b)
rect1 = rect
del rect1
# del rect
while 1:
pass
python析構函式
class test object def init self,name self.name name print 這是建構函式 def say hi self print hell,s self.name def del self print 這是析構函式 obj test bigberg obj...
析構函式 及 指標
第一層是系統認識的變數,比如int,int 這些變數系統會在生存週期結束後自動釋放的,當然,你也可以手動地將其釋放 第二層是指標指向的動態分配的空間,需要呼叫delete函式來釋放 類裡面定義的也無外乎這兩種 為何要寫析構函式?而且一般定義成 virtual 型別?你沒法去訪問類的priviate成...
Python之析構函式
析構函式 與建構函式 建立物件的時候第乙個被自動呼叫的函式 init 相反,當物件被銷毀的時候自動呼叫的函式 del 被稱為析構函式 物件銷毀 程式執行完畢,使用del刪除,即物件被銷毀 使用場景 物件即將被銷毀的時候需要做一些工作,比如 關閉檔案,關閉資料庫,關閉各種資源 import time ...