重载运算符如何在Python中工作?

我们知道我们可以使用+运算符来添加数字并同时连接字符串。这是可能的,因为int类和str类都重载了+运算符。运算符基本上是在各个类中定义的方法。运算符的定义方法称为运算符重载。例如,要将+运算符用于自定义对象,我们需要定义一个称为__add__的方法。

示例

以下代码使您易于理解运算符重载的工作方式

import math
class Circle:
     def __init__(self, radius):
        self.__radius = radius
     def setRadius(self, radius):
        self.__radius = radius
     def getRadius(self):
        return self.__radius
     def area(self):
        return math.pi * self.__radius ** 2
     def __add__(self, another_circle):
        return Circle( self.__radius + another_circle.__radius )
c1 = Circle(3)
print(c1.getRadius())
c2 = Circle(6)
print(c2.getRadius())
c3 = c1 + c2 # This is because we have overloaded + operator by adding a method  __add__
print(c3.getRadius())

输出结果

这给出了输出

3
6
9

修改运算符的行为以使其与用户定义的类型一起使用称为运算符重载。对于Python中的每个运算符,都有一个对应的特殊方法,例如__add__。有关更多详细信息,请参见docs.python.org/ref/specialnames.html。