📅  最后修改于: 2023-12-03 15:19:36.384000             🧑  作者: Mango
在Python中,运算符重载是指为自定义的类重新定义Python内置运算符的行为。这样,我们就可以通过自定义的操作符来实现特定的功能,让代码更加简洁、易于阅读和理解。
Python中的运算符通常都是在内置类型中定义的,但是它们可以被自定义的类型以不同的方式使用,使得我们能够自由地实现自己的运算逻辑。
Python允许我们重载以下运算符:
| 运算符 | 魔法方法 | 说明 | | :----: | :-------: | :--------------------------: | | + | __add__ | 加法运算 | | - | __sub__ | 减法运算 | | * | __mul__ | 乘法运算 | | / | __truediv__ | 真除法运算 | | // | __floordiv__ | 地板除法运算 | | % | __mod__ | 取模运算 | | ** | __pow__ | 幂运算 | | << | __lshift__ | 左移运算 | | >> | __rshift__ | 右移运算 | | & | __and__ | 按位与运算 | | | | __or__ | 按位或运算 | | ^ | __xor__ | 按位异或运算 | | ~ | __invert__ | 按位取反 | | < | __lt__ | 小于运算 | | <= | __le__ | 小于等于运算 | | > | __gt__ | 大于运算 | | >= | __ge__ | 大于等于运算 | | == | __eq__ | 等于运算 | | != | __ne__ | 不等于运算 | | [] | __getitem__ | 获取元素 | | []= | __setitem__ | 设置元素 | | () | __call__ | 调用运算符 |
我们可以通过在自定义的类中定义特殊方法,即魔法方法(Magic Method)来重载运算符。
例如,我们可以定义一个类,重载'+'运算符,使其将两个对象相加返回一个新的对象:
class Point:
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return '({0}, {1})'.format(self.x, self.y)
def __add__(self, other):
x = self.x + other.x
y = self.y + other.y
return Point(x, y)
p1 = Point(1, 2)
p2 = Point(3, 4)
print(p1 + p2) # 输出 (4, 6)
在上面的例子中,我们定义了一个名为'Point'的类,该类包含两个属性'x'和'y',以及一个魔法方法'add'(重载'+'运算符),用来将两个'Point'对象相加。'add'方法的返回值是一个新的'Point'对象,其'x'和'y'属性值分别是两个对象相加后的结果。
重载'+'运算符后,我们可以直接将两个'Point'对象相加,而不需要编写一个专门的方法来执行相加操作。
Python允许我们为自定义类重载Python内置运算符的行为,从而实现自定义的运算逻辑。我们只需要在类中定义特殊方法,即魔法方法,就可以轻松地实现运算符重载。