構造函數和析構函數

構造函數:
當類被調用,實例化的第一步是創建實例對象。在類創建實例對象時會使用構造函數初始化其內部狀態。python提供的構造函數是__init__(),這個函數是可選的,沒有提供時,系統會默認提供一個無參的構造函數,構造函數形如下列:

class Province:

    memo = "中國的23個省之一"   #是類的字段,是屬於類的,不屬於對象,這個屬於類的靜態字段,屬於類

    def __init__(self,name,captial,leader):

        self.Name=name               #通過self創建的字段叫做動態字段,不像靜態字段,動態字段屬於對象
        self.Captial=captial
        self.Leader=leader


XZ=Province("西藏","烏魯木齊","×××",True)



析構函數:
當使用del刪除對象時,會調用他本身的析構函數,另外當對象在某個作用於中調用完畢,在跳出其作用域的同時析構函數也會被調用,這樣可以來釋放內存空間,析構函數時可選的,如果不提供時,python會使用默認的析構函數,析構函數形如__del__。
顯式的調用析構函數,可以使用del關鍵字:del 對象名
在上面的例子中添加析構函數,如下:

class Province:
    memo = "中國的23個省之一"   #是類的字段,是屬於類的,不屬於對象,這個屬於類的靜態字段,屬於類
    def __init__(self,name,captial,leader):
        self.Name=name               #通過self創建的字段叫做動態字段,不像靜態字段,動態字段屬於對象
        self.Captial=captial
        self.Leader=leader

    def __del__(self):
        print "析構函數被調用"            
XZ=Province("西藏","烏魯木齊","×××",True)
print XZ.Leader
del XZ     #釋放對象,之後就不能再訪問該對象了
print XZ.Leader

#執行結果如下
×××

析構函數被調用

Traceback (most recent call last):

  File "F:\lvsir\workspace\pystudy-oldboy\oop\xghs.py", line 16, in <module>

    print XZ

NameError: name 'XZ' is not defined

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章