目录
运算符重载的名声并不好, 这个语言特性被滥用,导致缺陷和意料之外的性能瓶颈。 但是,如果使用得当,API 会变得好用,代码会变得易于阅读。
1.重载运算符的限制规定:
不能重载内置类型的运算符;
不能新建运算符, 只能重载现有的;
某些运算符不能重载——is、 and、 or 和 not(不过位运算符&、 | 和 ~ 可以)
2. 一元运算符
- 取负,__neg__
+取正,__neg__
~ 取反,__invert__
abs() 求绝对值,__abs__
要支持这些一元运算符,只需实现相应特殊方法。
3.重载加法运算符 +
特殊方法: __add__(self, other)
为了支持涉及不同类型的运算, Python 为中缀运算符特殊方法提供了特殊的分派机制。对表达式 a + b 来说, 解释器会执行以下几步操作:
如果 a 有 __add__ 方法, 而且返回值不是 NotIm