https://www.cnblogs.com/yeungchie/
Python中的運算子豐富多樣,它們可以分為多個類別,包括算術運算子、比較運算子、邏輯運算子、位運算子、身份運算子、成員運算子等。每個運算子都有其對應的魔法方法(也稱為特殊方法或dunder方法,即雙下劃線方法),這些方法在特定情況下會被Python呼叫來實現運算子的行為。下面是一些常見運算子及其對應的魔法方法:
算術運算子
+
加法:__add__(self, other)
-
減法:__sub__(self, other)
*
乘法:__mul__(self, other)
/
除法(Python 3 中為真除法):__truediv__(self, other)
//
整除:__floordiv__(self, other)
%
取模:__mod__(self, other)
**
冪運算:__pow__(self, other[, modulo])
+
(一元正號):__pos__(self)
-
(一元負號):__neg__(self)
~
(按位取反,不常用):__invert__(self)
比較運算子
==
等於:__eq__(self, other)
!=
不等於:__ne__(self, other)
<
小於:__lt__(self, other)
>
大於:__gt__(self, other)
<=
小於等於:__le__(self, other)
>=
大於等於:__ge__(self, other)
邏輯運算子
Python中沒有直接的魔法方法對應邏輯運算子,邏輯運算通常透過
and
、or
、not
關鍵字實現
位運算子
&
按位與:__and__(self, other)
|
按位或:__or__(self, other)
^
按位異或:__xor__(self, other)
<<
左移:__lshift__(self, other)
>>
右移:__rshift__(self, other)
身份運算子
is
沒有直接對應的魔法方法,因為這是Python直譯器直接處理的。is not
同上。
成員運算子
in
沒有直接對應的魔法方法,但可以透過重寫__contains__(self, item)
來影響in
的判斷邏輯。not in
間接透過__contains__
方法影響。
其他特殊方法
+
(用於字串拼接或列表合併):根據物件型別不同,可能呼叫__add__
或特定型別的其他方法。[]
(索引和切片):__getitem__(self, key)
、__setitem__(self, key, value)
、__delitem__(self, key)
()
(呼叫):__call__(self[, args...])
這些魔法方法允許你在自定義類中過載運算子,從而讓類例項支援這些運算子的行為。需要注意的是,實現這些方法時應遵循運算子的常規語義,以保持程式碼的一致性和可預測性。