python析構函式用法及注意事項

2022-09-27 04:57:10 字數 1427 閱讀 7864

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 ...