📜  Python运算符重载(1)

📅  最后修改于: 2023-12-03 15:04:42.109000             🧑  作者: Mango

Python运算符重载

在Python中,运算符是预定义行为的符号,例如加号(+)表示两个数字相加,减号(-)表示两个数字相减。然而,在Python中,你可以重载运算符,以便你自己定义运算符的行为。这使得你可以使用Python内建的运算符处理自己定义的类和对象。

什么是运算符重载?

在Python中,当编写一个类时,你可以重载类的某些特定方法,以便你自己定义运算符的行为。这些方法在Python中称为"魔法方法",因为它们的名称都以双下划线 "__" 开头和结尾。

运算符重载的魔法方法

下面是可以被重载的运算符及其对应的魔法方法:

| 运算符 | 魔法方法 | | :--| :-- | | + | __add__(self, other) | | - | __sub__(self, other) | | * | __mul__(self, other) | | / | __truediv__(self, other) | | // | __floordiv__(self, other) | | % | __mod__(self, other) | | ** | __pow__(self, other) | | < | __lt__(self, other) | | <= | __le__(self, other) | | == | __eq__(self, other) | | != | __ne__(self, other) | | > | __gt__(self, other) | | >= | __ge__(self, other) | | [] | __getitem__(self, key) | | []= | __setitem__(self, key, value) | | @ | __matmul__(self, other) | | & | __and__(self, other) | | l | __or__(self, other) | | ^ | __xor__(self, other) | | ~ | __invert__(self) | | << | __lshift__(self, other) | | >> | __rshift__(self, other) |

例子

下面是一个例子,我们将为一个名为"People"的类重载 "+" 运算符。这个类将代表人的信息,包括名字和年龄。我们将通过 "+" 运算符将两个人的年龄相加,并返回一个新的 People 对象,该对象包括两个人的名字和年龄。

class People:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __add__(self, other):
        name = self.name + ' ' + other.name
        age = self.age + other.age
        return People(name, age)

person1 = People('Tom', 30)
person2 = People('Lucy', 25)
person3 = person1 + person2

print(person3.name) # 输出 Tom Lucy
print(person3.age) # 输出 55

在上面的例子中,我们定义了一个名为 "add" 的魔法方法,该方法用于重载 "+" 运算符。我们创建了一个名为 "People" 的类,其中包含两个属性 "name" 和 "age",并且“add”方法返回一个新的 "People" 对象,该对象包含两个人的名字和年龄。最后,我们创建了三个 People 对象,并使用 "+" 运算符将两个人的年龄相加。