流畅的 Python 阅读记录八:重载运算符
这篇主要讲一下重载运算符的事情, 其实没几个啦, 下面是记录.
1. 重载运算符, 和 C++ 一样, 重新实现 __add__
、__mul__
这些方法即可.
2. 和 C++ 的不同: 重载 __radd__
和 __rmul__
, 如果 a+b
中发现 a
没有 __add__
方法, 那么就会尝试调用 b
的 __radd__
方法, 流程如图所示.
3. 和 C++ 的不同: 重载 __iadd
和 __imul__
, 用于就地计算, 就是计算 a+=b
的时候会调用这些方法.
4. 一个不重要的知识: 实现了 __eq__
而不实现 __ne__
没有问题, 需要后者的时候会自动对前者的结果取反.