python中的類的魔術方法的總結

2021-09-09 05:44:47 字數 4823 閱讀 9884

__new__(cls[, ...])	

1. __new__ 是在乙個物件例項化的時候所呼叫的第乙個方法

2. 它的第乙個引數是這個類,其他的引數是用來直接傳遞給 __init__ 方法

3. __new__ 決定是否要使用該 __init__ 方法,因為 __new__ 可以呼叫其他類的構造方法或者直接返回別的例項物件來作為本類的例項,如果 __new__ 沒有返回例項物件,則 __init__ 不會被呼叫

4. __new__ 主要是用於繼承乙個不可變的型別比如乙個 tuple 或者 string

__init__(self[, ...])

構造器,當乙個例項被建立的時候呼叫的初始化方法

__del__(self)

析構器,當乙個例項被銷毀的時候呼叫的方法

__call__(self[, args...])

允許乙個類的例項像函式一樣被呼叫:x(a, b) 呼叫 x.__call__(a, b)

__len__(self)

定義當被 len() 呼叫時的行為

__repr__(self)

定義當被 repr() 呼叫或者直接執行物件時的行為

__str__(self)

定義當被 str() 呼叫或者列印物件時的行為

__bytes__(self)

定義當被 bytes() 呼叫時的行為

__hash__(self)

定義當被 hash() 呼叫時的行為

__bool__(self)

定義當被 bool() 呼叫時的行為,應該返回 true 或 false

__format__(self, format_spec)

定義當被 format() 呼叫時的行為

## 有關屬性

__getattr__(self, name) 定義當使用者試圖獲取乙個不存在的屬性時的行為

__getattribute__(self, name) 定義當該類的屬性被訪問時的行為

__setattr__(self, name, value) 定義當乙個屬性被設定時的行為

__delattr__(self, name) 定義當乙個屬性被刪除時的行為

__dir__(self) 定義當 dir() 被呼叫時的行為

__get__(self, instance, owner) 定義當描述符的值被取得時的行為

__set__(self, instance, value) 定義當描述符的值被改變時的行為

__delete__(self, instance) 定義當描述符的值被刪除時的行為

__lt__(self, other)	定義小於號的行為:x < y 呼叫 x.__lt__(y)

__le__(self, other) 定義小於等於號的行為:x <= y 呼叫 x.__le__(y)

__eq__(self, other) 定義等於號的行為:x == y 呼叫 x.__eq__(y)

__ne__(self, other) 定義不等號的行為:x != y 呼叫 x.__ne__(y)

__gt__(self, other) 定義大於號的行為:x > y 呼叫 x.__gt__(y)

__ge__(self, other) 定義大於等於號的行為:x >= y 呼叫 x.__ge__(y)

__add__(self, other)	定義加法的行為:+

__sub__(self, other) 定義減法的行為:-

__mul__(self, other) 定義乘法的行為:*

__truediv__(self, other) 定義真除法的行為:/

__floordiv__(self, other) 定義整數除法的行為://

__mod__(self, other) 定義取模演算法的行為:%

__divmod__(self, other) 定義當被 divmod() 呼叫時的行為

__pow__(self, other[, modulo]) 定義當被 power() 呼叫或 ** 運算時的行為

__lshift__(self, other) 定義按位左移位的行為:<<

__rshift__(self, other) 定義按位右移位的行為:>>

__and__(self, other) 定義按位與操作的行為:&

__xor__(self, other) 定義按位異或操作的行為:^

__or__(self, other) 定義按位或操作的行為:|

__radd__(self, other)	(與上方相同,當左運算元不支援相應的操作時被呼叫)

__rsub__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rmul__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rtruediv__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rfloordiv__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rmod__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rdivmod__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rpow__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rlshift__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rrshift__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rand__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__rxor__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__ror__(self, other) (與上方相同,當左運算元不支援相應的操作時被呼叫)

__iadd__(self, other)	定義賦值加法的行為:+=

__isub__(self, other) 定義賦值減法的行為:-=

__imul__(self, other) 定義賦值乘法的行為:*=

__itruediv__(self, other) 定義賦值真除法的行為:/=

__ifloordiv__(self, other) 定義賦值整數除法的行為://=

__imod__(self, other) 定義賦值取模演算法的行為:%=

__ipow__(self, other[, modulo]) 定義賦值冪運算的行為:**=

__ilshift__(self, other) 定義賦值按位左移位的行為:<<=

__irshift__(self, other) 定義賦值按位右移位的行為:>>=

__iand__(self, other) 定義賦值按位與操作的行為:&=

__ixor__(self, other) 定義賦值按位異或操作的行為:^=

__ior__(self, other) 定義賦值按位或操作的行為:|=

__pos__(self)	定義正號的行為:+x

__neg__(self) 定義負號的行為:-x

__abs__(self) 定義當被 abs() 呼叫時的行為

__invert__(self) 定義按位求反的行為:~x

__complex__(self)	定義當被 complex() 呼叫時的行為(需要返回恰當的值)

__int__(self) 定義當被 int() 呼叫時的行為(需要返回恰當的值)

__float__(self) 定義當被 float() 呼叫時的行為(需要返回恰當的值)

__round__(self[, n]) 定義當被 round() 呼叫時的行為(需要返回恰當的值)

__index__(self)

1. 當物件是被應用在切片表示式中時,實現整形強制轉換

2. 如果你定義了乙個可能在切片時用到的定製的數值型,你應該定義 __index__

3. 如果 __index__ 被定義,則 __int__ 也需要被定義,且返回相同的值

__enter__(self)	

1. 定義當使用 with 語句時的初始化行為

2. __enter__ 的返回值被 with 語句的目標或者 as 後的名字繫結

__exit__(self, exc_type, exc_value, traceback)

1. 定義當乙個**塊被執行或者終止後上下文管理器應該做什麼

2. 一般被用來處理異常,清除工作或者做一些**塊執行完畢之後的日常工作

__len__(self)	定義當被 len() 呼叫時的行為(返回容器中元素的個數)

__getitem__(self, key) 定義獲取容器中指定元素的行為,相當於 self[key]

__setitem__(self, key, value) 定義設定容器中指定元素的行為,相當於 self[key] = value

__delitem__(self, key) 定義刪除容器中指定元素的行為,相當於 del self[key]

__iter__(self) 定義當迭代容器中的元素的行為

__reversed__(self) 定義當被 reversed() 呼叫時的行為

__contains__(self, item) 定義當使用成員測試運算子(in 或 not in)時的行為

python中的魔術方法

單例模式 class car def new cls,args,kwargs if not hasattr car,inst 如果car裡沒有inst屬性 car.inst object.new cls 建立乙個car物件給inst return car.inst 返回inst的屬性 def ini...

Python中的魔術方法

魔術方法就是乙個類 物件中的方法,和普通方法唯一的不同時,普通方法需要呼叫!而魔術方法是在特定時刻自動觸發。這裡列舉出幾個常用的魔術方法 1.init 初始化魔術方法 觸發時機 初始化物件時觸發 不是例項化觸發,但是和例項化在乙個操作中 引數 至少有乙個self,接收物件 返回值 無 作用 初始化物...

Python類內部的魔術方法

1.repr 和 str 方法 repr 和 str 方法用來響應repr 函式和str 函式。repr 函式返回字串在 中的樣子,在輸出時不會對轉義字元進行轉義,而str 返回使用者看到的樣子。你可以執行上述 看一下這兩者的區別。print repr hello nworld print str ...