Перегрузка операторов — Python(Питон)

Сначала стоит напомнить, что методы, которые начинаются и заканчиваются двойными нижними подчеркиваниями, называются магическими.

Например, выше в классе Point мы определили __str__, который отвечает за то, как выводятся объекты класса на экран.

Для перегрузки оператора «+» нужно определить метод __add__. Он принимает два аргумента, которыми являются, соответственно, операнды в операции сложения.

Таким образом, когда разработчик пишет запись p1 + p2, интерпретатор воспринимает это в виде Point.__add__(p1, p2). Для всех операторов в языке, включая и логические, есть свои магические методы.

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(2, 3)
print(p1 + p2)

Leave a Comment