运算符重载 [Python]

利用运算符,可简洁地表示内建类型的对象处理。还可将运算符用于一个类的对象。尽管Python不允许创建新的运算符,但它允许重载现有的大多数运算符。这样一来,一旦将这些运算符用于程序员自定义类型的对象,运算符就会具有与新类型相符的含义。

尽管运算符重载感觉就像一种奇特的功能,但大多数程序员隐式使用重载的运算符。举个例子来说,加法运算符(+)对整数、浮点数和字符串会采用截然不同的操作。但是,针对这些类型和其他内建类型的变量,加法仍然能很好地工作,因为加法运算符(+)已在Python语言内部进行了重载。

要想重载运算符,需要和往常一样写一个方法定义,只是方法名要与用于那个运算符的Python特殊方法对应。例如:方法名__add__重载了加法运算符(+)。要将运算符用于类的一个对象,类必须重载那个运算符(即为其定义特殊方法)。

重载尤其适合数学类。它们经常要求重载一系列运算符,目的是与这些数学类在现实世界的处理方式保持一致。例如针对有理数,仅仅重载加法运算符通常是不够的,因为有理数还普遍地使用了其他算术运算符。

Python提供了丰富的运算符。作为程序员。只要充分理解了每个运算符的含义及背景,才能在为新的类重载运算符时做出合理的选择。

运算符重载为用户自定义类提供了简洁的表达式,这类似于Python为内建类型提供的丰富的运算符。然而,运算符重载不是自动进行的。为执行需要的操作,程序员必须编写运算符重载方法。

有可能出现过度重载的情况,比如重载运算符+以执行减法运算,或者重载运算符-以执行乘法运算。像这样不直观地使用重载,会使程序难以理解,所以应尽量避免。