Python學習之路15 魔法方法1

2021-10-07 21:07:44 字數 4571 閱讀 4138

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

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

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

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

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

__mod__(self, value, /) 定義取模運算的行為:%

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

__pow__(self, value, mod=none, /) 定義冪運算的行為:** 或當被pow呼叫時的行為:pow(self, value, mod)

__lshift__(self, value, /) 定義按位左移操作的行為:<<

__rshift__(self, value, /) 定義按位右移操作的行為:>>

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

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

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

# 定義複數類的加法運算子

>>

>

class

complex

:def

__init__

(self, x=

0, y=0)

: self.x = x

self.y = y

def__add__

(self, value)

: x = self.x + value.x

y = self.y + value.y

return complex(x, y)

defshow

(self)

:if self.y>0:

print

('%d+%di'

%(self.x, self.y)

)elif self.y==0:

print

('%d'

% self.x)

else

:print

('%d%di'

%(self.x, self.y)

)>>

> a = complex(

)>>

> b = complex(1)

>>

> c = complex(2,

3)>>

> d = complex(-2

,-5)

>>

> f = a + b

>>

> f.show()1

>>

> f = a + c

>>

> f.show()3

+3i>>

> d.show()-

2-5i

__radd__(self, value, /)             當左運算元不支援相應運算時被呼叫

__rsub__(self, value, /) 當左運算元不支援相應運算時被呼叫

__rmul__(self, value, /) 當左運算元不支援相應運算時被呼叫

__rtruediv__(self, value, /) 當左運算元不支援相應運算時被呼叫

__rfloordiv__(self, value, /) 當左運算元不支援相應運算時被呼叫

__rmod__(self, value, /) 當左運算元不支援相應運算時被呼叫

__rdivmod__(self, value, /) 當左運算元不支援相應運算時被呼叫

__rpow__(self, value, mod=none, /) 當左運算元不支援相應運算時被呼叫

__rlshift__(self, value, /) 當左運算元不支援相應運算時被呼叫

__rrshift__(self, value, /) 當左運算元不支援相應運算時被呼叫

__rand__(self, value, /) 當左運算元不支援相應運算時被呼叫

__ror__(self, value, /) 當左運算元不支援相應運算時被呼叫

__rxor__(self, value, /) 當左運算元不支援相應運算時被呼叫

# 定義反運算

>>

>

class

int(

int)

:def

__radd__

(self, value)

:return

int.__sub__(self, value)

>>

> a =

int(2)

>>

> b =

int(3)

>>

> a + b # 呼叫a的add方法

5>>

>

2+ b # 呼叫b的radd方法

1

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

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

__imul__(self, value, /) 定義乘法的行為:*=

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

__ifloordiv__(self, value, /) 定義整除法的行為://=

__imod__(self, value, /) 定義取模運算的行為:%=

__ipow__(self, value, mod=none, /) 定義賦值冪運算的行為:**=

__ilshift__(self, value, /) 定義賦值按位左移操作的行為:<<=

__irshift__(self, value, /) 定義賦值按位右移操作的行為:>>=

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

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

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

__neg__(self, /)        定義正號的行為:+x

__pos__(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__ 也需要被定義,且返回相同的值

__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)

python學習 十二 魔法方法

魔法方法是指用 包起來的方法,可以不直接呼叫方法或者呼叫其它函式時會呼叫到對應的魔法方法。這種拼寫表示名字有特殊含義,不要在自己的程式中使用這種名字。先對魔法方法的幾個特點強調一下 基本序列的魔法方法 當用len 函式去獲取乙個物件的長度時,會呼叫該物件內部的 len 方法,這個方法就會返回集合中所...

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...