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

構(gòu)造和初始化

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

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

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

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

控制屬性訪問

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

網(wǎng)友評(píng)論