在Python中,所有以“__”雙下劃線包起來的方法,都統稱為“Magic Method”,例如類的初始化方法 __init__ ,Python中所有的魔術方法均在官方文檔中有相應描述,但是對于官方的描述比較混亂而且組織比較松散。很難找到有一個例子。
構造和初始化
每個Pythoner都知道一個最基本的魔術方法, __init__ 。通過此方法我們可以定義一個對象的初始操作。然而,當調用 x = SomeClass() 的時候, __init__ 并不是第一個被調用的方法。實際上,還有一個叫做__new__ 的方法,兩個共同構成了“構造函數”。
__new__是用來創(chuàng)建類并返回這個類的實例, 而__init__只是將傳入的參數來初始化該實例。
在對象生命周期調用結束時,__del__ 方法會被調用,可以將__del__理解為“構析函數”。下面通過代碼的看一看這三個方法:
from os.path import join class FileObject: '''給文件對象進行包裝從而確認在刪除時文件流關閉''' def __init__(self, filepath='~', filename='sample.txt'): #讀寫模式打開一個文件 self.file = open(join(filepath, filename), 'r+') def __del__(self): self.file.close() del self.file
控制屬性訪問
許多從其他語言轉到Py