北京网帮你
python重载算术运算的运算符和表达式说明
时间:2019-09-18 15:39:19 浏览:103

反向算术运算符的重载
 当运算符的左侧为内建类型时,右侧为自定义类型进行算术运算时,会出现TypeError错误,因无法修改内建类型的代码来实现运算符重载,此时需要使用反向算术运算符重载来完成重载

反向算术运算重载
 方法名                  运算符和表达式    说明
 __radd__(self, rhs)      lhs +  self     加法
 __rsub__(self, rhs)      lhs -  self     减法
 __rmul__(self, rhs)      lhs *  self     乘法
 __rtruediv__(self, rhs)  lhs /  self     除法
 __rfloordiv__(self, rhs) lhs // self     地板法
 __rmod__(self, rhs)      lhs %  self     求余(取模)
 __rpow__(self, rhs)      lhs ** self     冪运算




复合赋值算术运算符重载
 以复合赋值算术运算符 x += y 为例, 此运算符会优先调用 x.__iadd__(y) 方法,如果没有__iadd__方法时会将复合赋值运算符拆为 x = x + y, 然后调用 x = x.__add__(y) 方法, 如果再不存在__add__方法则会触发TypeError异常

 其它复合赋值算术运算符也具有相同的规则

复合赋值算术运算重载
 方法名                  运算符和表达式    说明
 __iadd__(self, rhs)      self +=  rhs     加法
 __isub__(self, rhs)      self -=  rhs     减法
 __imul__(self, rhs)      self *=  rhs     乘法
 __itruediv__(self, rhs)  self /=  rhs     除法
 __ifloordiv__(self, rhs) self //= rhs     地板法
 __imod__(self, rhs)      self %=  rhs     求余(取模)
 __ipow__(self, rhs)      self **= rhs     冪运算



比较运算符的重载
 方法名                  运算符和表达式    说明
 __lt__(self, rhs)      self <  rhs     小于
 __le__(self, rhs)      self <= rhs     小于等于
 __gt__(self, rhs)      self >  rhs     大于
 __ge__(self, rhs)      self >= rhs     大于等于
 __eq__(self, rhs)      self == rhs     等于
 __ne__(self, rhs)      self != rhs     不等于

注: 比较运算符通常返回布尔值True 或False



位运算符的重载
 方法名                  运算符和表达式    说明
 __invert__(self, rhs)    ~self    取反(一元运算符)
 __and__(self, rhs)       self &  rhs     位与
 __or__(self, rhs)        self |  rhs     位或
 __xor__(self, rhs)       self ^  rhs     位异或
 __lshift__(self, rhs)    self << rhs     左移
 __rshift__(self, rhs)    self >> rhs     右移

反向位运算符的重载
 方法名                  运算符和表达式    说明
 __rand__(self, rhs)       lhs &  self     位与
 __ror__(self, rhs)        lhs |  self     位或
 __rxor__(self, rhs)       lhs ^  self     位异或
 __rlshift__(self, rhs)    lhs << self     左移
 __rrshift__(self, rhs)    lhs >> self     右移

复合赋值位运算符的重载
 方法名                  运算符和表达式    说明
 __iand__(self, rhs)    self &=  rhs     位与
 __ior__(self, rhs)     self |=  rhs     位或
 __ixor__(self, rhs)    self ^=  rhs     位异或
 __ilshift__(self, rhs) self <<= rhs     左移
 __irshift__(self, rhs) self >>= rhs     右移





一元运算符的重载
   方法名          运算符和表达式   说明
 __neg__(self)      - self       负号
 __pos__(self)      + self       正号
 __invert__(self)   ~ self       取反

  语法格式:
     def __xxx__(self):
         ...

[上一篇]使用Springboot加LayIM websocket
[下一篇]python文件的操作流程说明
Copyright 2022 © 93580.com.cn 网帮你

2022 © 版权所有 红花岗区网帮你信息技术工作室

工信部备案号:黔ICP备2024036985号-2

请使用网帮你微信扫码登录