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,le,eq比較運算子
>,>=,!=
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...