在某些圈子中,运算符重载的名声并不好。这个语言特性可能(已经)被滥用,让程序员困惑,导致缺陷和意料之外的性能瓶颈。但是,如果使用得当,API 会变得好用,代码会变得易于阅读。Python 施加了一些限制,做好了灵活性、可用性和安全性方面的平衡:

第 10 章已经为 Vector 定义了一个中缀运算符,即 ==,这个运算符由 __eq__ 方法支持。本章将改进 __eq__ 方法的实现,更好地处理不是 Vector 实例的操作数。然而,在运算符重载方面,众多比较运算符(==!=><>=<=)是特例,因此我们首先将在 Vector 中重载四个算术运算符:一元运算符 -+,以及中缀运算符 +*

先从最简单的入手:一元运算符。