92 特殊方法 魔術方法 和運算子過載

2021-10-09 15:01:48 字數 1699 閱讀 3683

python - 特殊方法查詢-文件1

python - 特殊方法-文件2

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

a =

20b =

30c = a+b

d = a.__add__(b)

print

("c="

, c)

print

("d="

, d)

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(

"onspis"

)p2 = person(

"yaphets"

)x = p1 + p2 # 這裡重寫了 ,所以支援 字元 用 -- 連線 起來

print

(x)print

(p1*3)

# ipython 執行效果

in [5]

: p1 = person(

"onspis").

..: p2 = person(

"yaphets"

)in [6]

: p1

out[6]

:<__main__.person at>

>

in [7]

: p2

out[7]

:<__main__.person at>

>

in [8]

: p1+p2

out[8]

:'onspis--yaphets'

in [9]

: p1*

3out[9]

:'onspisonspisonspis'

in [10]

: p1*p2

out[10]

:'不是同類物件,不能相乘'

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

每個運算子實際上都對應了相應的方法,統計如下:

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

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

Python中常見的特殊方法 魔術方法介紹

class vector2d typecode d def init self,x,y self.x float x 私有變數 self.y float y property def x self 讀取,v1.x相同方式讀取 return self.x property def y self ret...

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

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