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.say_hi()

del obj

#輸出
  這是構造函數


  hello bigberg


  這是析構函數

  

構造函數

  用於初始化類的內容部狀態,Python提供的構造函數式 __init__(),也就是當該類被實例化的時候就會執行該函數,__init__()方法是可選的,如果不提供,Python 會給出默認的__init__方法。

 

析構函數

  “__del__”就是一個析構函數了,當使用del 刪除對象時,會調用他本身的析構函數,另外當對象在某個作用域中調用完畢,在跳出其作用域的同時析構函數也會被調用一次,這樣可以用來釋放內存空間。  

  __del__()也是可選的,如果不提供,則Python 會在后台提供默認析構函數

  如果要顯式的調用析構函數,可以使用del關鍵字: del obj
 
垃圾回收機制  
s = '123'
print('del...running')
del s

  當我們用del刪除一個對象時,其實並沒有直接清除該對象的內存空間。Python 采用‘引用計數’ 的算法方式來處理回收,即:當某個對象在其作用域內不再被其他對象引用的時候,Python 就自動清除對象。

  而析構函數 __del__()在引用的時候就會自動清除被刪除對象的內存空間。


免責聲明!

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



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