首頁  >  文章  >  後端開發  >  python析構函式與建構子的用法講解

python析構函式與建構子的用法講解

巴扎黑
巴扎黑原創
2017-07-17 16:10:142899瀏覽
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__()在引用的時候就會自動清除被刪除物件的記憶體空間。

建構子:

用於初始化類別的內容部狀態,Python提供的建構子式__init__();

也就是當該類別被實例化的時候就會執行該函數。那我們就可以把要先初始化的屬性放到這個函數裡面。如下程式:

   python析構函式與建構子的用法講解 

__init__()方法是可選的,如果不提供,Python 會給予預設的__init__方法

一般資料的取得需要定義的get和set方法


以上是python析構函式與建構子的用法講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn