Python基礎-DAY18
過載:
什麼是過載:
用自定義的規則實現例項方法之間的運算子操作或函式操作
作用:
讓例項像數學表示式一樣進行運算操作
讓程式簡結易讀
過載:
1) 函式過載
2) 運算子過載
函式過載:
讓例項像內建物件一樣進行內建函式操作
物件轉字串函式過載
repr() 函式
str() 函式
物件轉字串函式的過載方法:
repr() 的過載方法:
def __repr__(self):
...
str() 的過載方法:
def __str__(self):
...
注: 如果沒有__str__(self)方法,則返回repr(obj)函式結果代替
運算子過載:
作用:
讓自定義的類建立的物件像內建物件一樣進行運算子操作
算術運算子:
__add__ 加法 +
__sub__ 減法 -
__mul__ 乘法 *
__truediv__ 除法 /
__floordiv__ 地板除 //
__mod__ 取模(求餘) %
__pow__ 冪 **
二元運算子的過載方法格式:
def __xxx__(self, other):
...
注:二元運算子的過載方法引數列表中只能有兩個引數
反向算術運算子過載:
__radd__(self, lhs) 加法 lhs + self
__rsub__(self, lhs) 減法 lhs - self
__rmul__(self, lhs) 乘法 lhs * self
__rtruediv__(self, lhs) ...
__rfloordiv__(self, lhs) ...
__rmod__(self, lhs) ...
__rpow__(self, lhs) ...
注: lhs(left hand side) 左手邊
二元運算子
and or << >> ^ | &
> < >= <= == !=
複合賦值算術運算子的過載
__iadd__(self, other) 加法 self += other
__isub__(self, other) 減法 self -= other
__imul__(self, other) 乘法 self *= other
__itruediv__(self, other) 除法 self /= other
__ifloordiv__(self, other) 地板除法 self //= other
__imod__(self, other) 取模(求餘) self %= other
__ipow__(self, other) 冪法 self **= other
注:當過載後優先使用過載的方法,否則使用__add__等方法代替
比較運算子過載(二元運算子):
__lt__ 小於 <
__le__ 小於等於 <=
__gt__ 大於 >
__ge__ 大於等於 >=
__eq__ 等於 ==
__ne__ 不等於 !=
注:比較運算子通常返回布林值True或 False
位操作運算子過載:
__and__ 位與 &
__or__ 位或 |
__xor__ 位異或 ^
__lshift__ 左移 <<
__rshift__ 右移 >>
反向位操作運算子
__rand__
__ror__
...
複合賦值位運算子過載
__iand__
__ior__
...
一元運算子的過載:
__neg__ 負號 -
__pos__ 正號 +
__invert__ 取反 ~
過載格式:
def __xxx__(self):
.....