python中特殊方法和運算子過載

2021-10-09 02:48:48 字數 2036 閱讀 8525

python的運算子實際上是通過呼叫物件的特殊方法實現的

a=

20b=

30c=a+b

d=a.__add__(b)

print

("c="

,c)print

("d="

,d)

執行結果

c=

50d=

50

常見的特殊方法統計如下:

方法說明

例子__init__

構造方法

物件建立:p=person()

__del__

析構方法

物件**

__repr__,__str__

列印,轉換

print(a)

__call__

函式呼叫

a()__getattr__

點號運算

a.***

__setattr__

屬性賦值

a.***=value

__getitem__

索引運算

a[key]

__setitem__

索引賦值

a[key]=value

__len__

長度len(a)

運算子特殊方法

說明運算子+

add加法

運算子-

sub減法

<,<=,==

lt,leeq比較運算子

>,>=,!=

gt,ge,ne比較運算子

,^,&

or,xor,and或、異或、與

<<,>>

lshift,rshift左移、右移

*,/,%,//

mul,truediv,mod,floordiv乘、浮點除、模運算(取餘)、整數除

**pow指數運算

可以重寫上面的特殊方法,即實現了「運算子的過載」

#測試運算子的過載

class

person

:def

__init__

(self,name)

: self.name = name

def__add__

(self, other):if

isinstance

(other,person)

:return

"--"

.format

(self.name,other.name)

else

:return

"不是同類物件,不能相加"

def__mul__

(self, other):if

isinstance

(other,

int)

:return self.name*other

else

:return

"不是同類物件,不能相乘"

p1 = person(

"高淇"

)p2 = person(

"高希希"

)x = p1 + p2

print

(x)print

(p1*

3)

執行結果

高淇-

-高希希

高淇高淇高淇

90 Python 中特殊方法和運算子過載

目錄 特殊方法和運算子過載 常用的特殊方法 運算子的過載 python的運算子實際上是通過呼叫物件的特殊方法實現的 比如 方法 說明 例子 init 構造方法 物件建立 p person del 析構方法 物件 repr str 列印,轉換 print a call 函式呼叫 a getattr 點...

Python學習筆記 特殊方法和運算子過載

python內運算子也是通過呼叫物件的特殊方法實現的 c a b 是通過 c a.add b 來實現的 比如 p person 是用 init 記住 什麼都是物件 運算子都是方法 測試 的過載 class person def init self,name self.name name def ad...

20201205 110 特殊方法和運算子過載

python 的運算子實際上是通過呼叫物件的特殊方法實現的。比如 a 20b 30c a b d a.add b print c print d print dir a 執行結果 常用的特殊方法統計如下 每個運算子實際上都對應了相應的方法,統計如下 可以重寫上面的特殊方法,即實現 運算子的過載 cl...