在Python中,所有以“__”雙下劃線包起來的方法,都統(tǒng)稱為“Magic Method”,例如類的初始化方法 __init__ ,Python中所有的魔術(shù)方法均在官方文檔中有相應(yīng)描述,但是對于官方的描述比較混亂而且組織比較松散。很難找到有一個例子。

構(gòu)造和初始化

每個Pythoner都知道一個最基本的魔術(shù)方法, __init__ 。通過此方法我們可以定義一個對象的初始操作。然而,當(dāng)調(diào)用 x = SomeClass() 的時候, __init__ 并不是第一個被調(diào)用的方法。實(shí)際上,還有一個叫做__new__ 的方法,兩個共同構(gòu)成了“構(gòu)造函數(shù)”。

__new__是用來創(chuàng)建類并返回這個類的實(shí)例, 而__init__只是將傳入的參數(shù)來初始化該實(shí)例。

在對象生命周期調(diào)用結(jié)束時,__del__ 方法會被調(diào)用,可以將__del__理解為“構(gòu)析函數(shù)”。下面通過代碼的看一看這三個方法:

from os.path import join class FileObject: '''給文件對象進(jìn)行包裝從而確認(rèn)在刪除時文件流關(guān)閉''' def __init__(self, filepath='~', filename='sample.txt'): #讀寫模式打開一個文件 self.file = open(join(filepath, filename), 'r+') def __del__(self): self.file.close() del self.file

控制屬性訪問

許多從其他語言轉(zhuǎn)到Py