1. 程式人生 > >Python基礎-DAY18

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):

      .....