構造函數:
當類被調用,實例化的第一步是創建實例對象。在類創建實例對象時會使用構造函數初始化其內部狀態。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