Python中的常見特殊方法—— del方法


__del__() 方法用於銷毀Python對象——在任何Python對象將被系統回收的時候,系統都會自動調用這個方法。但是不要以為對一個變量執行del操作,該變量引用的對象就會被回收,當然不是,如果有多個變量引用它,del其中一個變量是不會回收該對象的。

栗子如下:

 1 #coding=utf-8
 2 class Item:
 3     def __init__(self,name,price):
 4         self.name=name
 5         self.price=price
 6     def __del__(self):
 7         print('del方法刪除對象')
 8 #創建一個Item對象,將之賦值給it變量
 9 it = Item('鼠標',29.8)
10 x = it
11 #打印it所引用的Item對象
12 del it
13 print('----------')

控制台打印如下:

 

解釋:第6、7行代碼重寫了Item類的__del__() 方法,當系統將要回收Item時,系統會自動調用Item對象的__del__() 方法。上面的程序先創建了一個Item對象並將該對象賦值給變量it,第10行代碼又將it賦值給x,所以程序中有兩個變量引用了Item對象,然后程序執行del it 刪除it對象,此時由於還有變量引用該Item對象,因此程序並不會回收Item對象。所以會看到如上面的輸出結果,為什么會這樣?因為del it 之后,程序並沒有回收Item對象,只有等到程序即將結束時(系統必須回收所有對象),系統才會回收Item對象。如果將第10行代碼注釋,打印如下:

解釋:注釋之后,當程序執行del it ,此時程序中不再有任何變量引用Item對象,因此系統會立即回收該對象,不需要等到程序結束前。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM