Python:重载运算符

  • 运算符重载有两个参数:
    1. self ——该对象本身
    2. other ——跟在运算符后面的对象
  • 以下为重载运算符的参考列表
函数名称 参数列表 重载符号
__add__ (self, other) +
__sub__ (self, other) -
__mul__ (self, other) *
__div__ (self, other) /
__floordiv__ (self, other) //
__mod__ (self, other) %
__pow__ (self, other) **
__lshift__ (self, other) <<
__rshift__ (self, other) >>
__and__ (self, other) &
__or__ (self, other) |
__xor__ (self, other) ^

以上函数名前增加 i,例如__ipow__则是重载 **= 运算符,__iadd__是重载 += 运算符。

函数名称 参数列表 重载符号
__invert__ (self) ~
__pos__ (self) + (一元运算符,例如:+a)
__neg__ (self) - (一元运算符,例如:-a)
函数名称 参数列表 重载符号
__eq__ (self, other) ==
__ne__ (self, other) !=
__lt__ (self, other) <
__gt__ (self, other) >
__le__ (self, other) <=
__ge__ (self, other) >=

在我所见的教程中,这些运算符都有确切的含义。这给很多人带来一个刻板印象——这些符号的重载方式是有模板的。

事实上,这些符号没有被强制规定有什么意义,虽然人们一般按照原有的作用重载,但也可以重载为其他功能。
例如Django的orm中,查询语句Q重载了 | 以及其他位运算符,但作用却是逻辑运算。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C++运算符重载-上篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 2,338评论 0 51
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,493评论 0 49
  • 注意:本文中代码均使用 Qt 开发编译环境 面向对象的多态性可以分为四类:重载多态、强制多态、包含多态和参数多态,...
    赵者也阅读 1,194评论 0 3
  • 印象中,第一次接触《红楼梦》的确切时间是在高中的语文课本中,那篇题为《林黛玉进贾府》的课文。高中的语文课,大...
    会走的树阅读 740评论 3 4
  • 我已经失业很多天了。我是人工智能专业的博士,但是却没有人肯雇佣我。 好几天来,我无助地在大街上徘徊,又徘徊,失望...
    原来我也在这阅读 284评论 2 7