📅  最后修改于: 2023-12-03 15:04:37.375000             🧑  作者: Mango
Python中的运算符重载是指在类中自定义运算符的行为,使得运算符可以用于对象。这种重载可以使代码更加简洁,同时也可以让代码更加易于理解。
Python中的每个运算符都对应着一个特殊方法,我们可以通过在类中实现这些方法来重载运算符。
以下是常用的运算符和对应方法:
运算符 | 方法
-|-
加法 +
| __add__(self, other)
减法 -
| __sub__(self, other)
乘法 *
| __mul__(self, other)
除法 /
| __truediv__(self, other)
求余 %
| __mod__(self, other)
整除 //
| __floordiv__(self, other)
幂 **
| __pow__(self, other)
正号 +
| __pos__(self)
负号 -
| __neg__(self)
相等 ==
| __eq__(self, other)
不等 !=
| __ne__(self, other)
小于 <
| __lt__(self, other)
小于等于 <=
| __le__(self, other)
大于 >
| __gt__(self, other)
大于等于 >=
| __ge__(self, other)
下面的代码展示了如何在一个类中重载运算符:
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __sub__(self, other):
return Vector(self.x - other.x, self.y - other.y)
def __mul__(self, scalar):
return Vector(self.x * scalar, self.y * scalar)
def __truediv__(self, scalar):
return Vector(self.x / scalar, self.y / scalar)
def __eq__(self, other):
return self.x == other.x and self.y == other.y
def __str__(self):
return f"({self.x}, {self.y})"
v1 = Vector(1, 2)
v2 = Vector(3, 4)
print(v1 + v2) # 输出:(4, 6)
print(v1 - v2) # 输出:(-2, -2)
print(v1 * 2) # 输出:(2, 4)
print(v2 / 2) # 输出:(1.5, 2.0)
print(v1 == v2) # 输出:False
在上面的示例中,我们自定义了Vector
类中的加法、减法、乘法和除法运算符的行为,并重载了相等运算符。我们还实现了__str__
方法,以便在打印对象时获取对象的字符串表示。
运算符重载可以使代码更加简洁、易于理解,使我们的类更像内置类型。不过要注意,这种重载应该是符合逻辑的,并且你应该在实现时考虑到不同的输入类型和边界条件。