Python - 面向對象編程 - __del__() 析構方法


del 語句

Python 提供了 del 語句用於刪除不再使用的變量

 

語法

del 表達式

 

刪除變量的栗子

var = "hello"
del var
print(var)


# 輸出結果
    print(var)
NameError: name 'var' is not defined

變量已經被刪除了,所以無法訪問變量

 

類的析構方法

  • Python 提供了一種機制使得對象被刪除前能夠得到通知
  • 對象被刪除時,如果該對象擁有名為 __del__  的方法,該方法在刪除前被調用,該方法又被稱為析構方法

 

語法

class 類:
    def __del__(self):
        self.屬性

 

重點

  • 析構方法是對象在被垃圾回收的時候起作用的一個方法
  • 它的執行一般也就意味着對象不能夠繼續引用, 回收內存
  • Python 建議不要在對象銷毀時做任何事情,因為對象銷毀的時間難以確定
  • 所以析構方法一般無須定義,日常使用時無需關心內存的分配和釋放,因為此工作都是交給 Python 解釋器來執行
  • 一句話:析構方法的調用是由解釋器在進行垃圾回收時自動觸發執行的

 

栗子一

當對象在某個作用域中調用完畢,在跳出其作用域的同時析構方法會自動被調用,這樣可以釋放內存空間

# 析構方法
class PoloBlog:
    # 構造方法
    def __init__(self):
        print("自動調用構造方法")

    def __del__(self):
        print("自動調用析構方法,釋放內存")


blog = PoloBlog()
print("最后一句代碼")


# 輸出結果
自動調用構造方法
最后一句代碼
自動調用析構方法,釋放內存

  

栗子二

主動 del 對象

# 析構方法
class PoloBlog:
    # 構造方法
    def __init__(self):
        print("自動調用構造方法")

    def __del__(self):
        print("自動調用析構方法,釋放內存")


blog = PoloBlog()
# 主動刪除對象
del blog
print("最后一句代碼")


# 輸出結果
自動調用構造方法
自動調用析構方法,釋放內存
最后一句代碼 
  • 使用 del 語句,相當於主動調用對象的析構方法,會立即刪除對象,並回收內存
  • 通常是刪除臨時的對象,對那些長期占用內存的臨時對象進行回收

 


免責聲明!

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



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