操作符重载
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)
= Circle(4)
c1 print(c1.getRadius())
= Circle(5)
c2 print(c2.getRadius())
= c1 + c2 # 之所以能使用加法运算符,是因为我们定义了__add__方法
c3 print(c3.getRadius())
在上面的例子中,我们为类添加了__add__
方法,该方法允许使用+
运算符对两个circle对象求和。在__add__
方法中,我们创建了一个新的对象,并将其返回给调用者。运行结果如下:
4
5
9
在Python中,除__add_
_方法对应+
运算符之外,还有其他能够重载运算符的方法:如__mul__
、__sub__
等等。