Python 魔法方法

2021-10-24 12:54:15 字數 1112 閱讀 4040

魔法方法總是被雙下劃線包圍,例如__init__

魔法方法是物件導向的 python 的一切,如果你不知道魔法方法,說明你還沒能意識到物件導向的 python 的強大。

魔法方法的「魔力」體現在它們總能夠在適當的時候被自動呼叫。

魔法方法的第乙個引數應為cls(類方法) 或者self(例項方法)。

__new__沒有正確返回當前類cls的例項,那__init__是不會被呼叫的,即使是父類的例項也不行,將沒有__init__被呼叫。

__new__方法主要是當你繼承一些不可變的 class 時(比如int, str, tuple), 提供給你乙個自定義這些類的例項化過程的途徑。

__del__(self)析構器,當乙個物件將要被系統**之時呼叫的方法。

__str__(self):

__repr__(self)

反運算魔方方法,與算術運算子保持一一對應,不同之處就是反運算的魔法方法多了乙個「r」。當檔案左操作不支援相應的操作時被呼叫。

a + b

這裡加數是a,被加數是b,因此是a主動,反運算就是如果a物件的__add__()方法沒有實現或者不支援相應的操作,那麼 python 就會呼叫b__radd__()方法。

描述符就是將某種特殊型別的類的例項指派給另乙個類的屬性。

協議(protocols)與其它程式語言中的介面很相似,它規定你哪些方法必須要定義。然而,在 python 中的協議就顯得不那麼正式。事實上,在 python 中,協議更像是一種指南。

容器型別的協議

把乙個類作為乙個迭代器使用需要在類中實現兩個魔法方法__iter__()__next__()

Python魔法方法 基本的魔法方法

new cls 1.new 是在乙個物件例項化時候所呼叫的第乙個方法 2.他的第乙個引數是這個類,其他的引數是用來直接傳遞給 init 方法 3.new 決定是否使用該 init 方法,因為.new 可以直接呼叫其他類的構造方法,或者返回別的例項物件來作為本類的例項,如果 new 沒有返回例項物件,...

python 魔法方法

魔法方法具有一定的特徵 new cls class capstr str def new cls,string 修改新類裡的new方法,需傳入乙個引數 string string.upper return str.new cls,string 用父類裡的new方法進行返回,直接飯後構造後的物件def...

python魔法方法

python魔術方法是特殊方法的暱稱。它是簡單而又強大,為了被python直譯器呼叫而存在的方法。python提供豐富的元物件協議,讓語言的使用者和核心開發者擁有並使用同樣的工具 例子引用 流暢的python 一摞python風格的紙牌 import collections namedtuple用來...