- python中,當程序執行完畢之后,python的垃圾回收機制就會將所有對象回收,清除占用的內存
請看如下代碼
1 class Parent(): 2 def __init__(self,name): 3 self.name=name 4 print('this is Parent_init') 5 6 def __del__(self): 7 print('回收父類對象...') 8 9 10 class Child(Parent): 11 def __init__(self,name,age): 12 super().__init__(name) 13 self.age=age 14 print('this is Child_init') 15 16 def __del__(self): 17 print('回收子類對象....') 18 19 #測試 20 ch=Child('Jane',23) 21 fc=Parent('Rounie') 22 #輸出 23 this is Parent_init 24 this is Child_init 25 this is Parent_init 26 回收子類對象.... 27 回收父類對象...
解釋:上面定義了兩個類父類Parent和子類Child,子類繼承父類。執行測試的兩行代碼,創建了兩個對象,一個子類對象ch,一個父類對象fc。因為類中顯式定義了類的內置函數__del__()函數,所以python垃圾回收機制會調用各自__del__()函數完成對對象的回收。當然,如果不顯式定義__del__()函數,執行完程序后,系統會自動調用類的內置函數__del__()完成對對象的回收。
2、對象再引用的回收機制
通過類的內置__del__()來回收,不管內置__del__()有沒有被顯式實現
3、對象引用的回收機制
__del__()如果被顯式實現,對象回收則通過顯式__del__()來回收,如果沒有被顯式實現,則調用內置__del__()來回收