Python перегрузка операторов
Python позволяет перегружать операторы, что означает, что мы можем изменить поведение стандартных операторов, таких как "+", "-", "*", "/", "==", ">", "<" и других, для объектов пользовательского класса.
Для перегрузки операторов в Python используются специальные методы, которые начинаются и заканчиваются двойным подчеркиванием. Например, чтобы перегрузить оператор "+", нужно определить метод "__add__". Примерно так:
python
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
if isinstance(other, Point):
return Point(self.x + other.x, self.y + other.y)
elif isinstance(other, int) or isinstance(other, float):
return Point(self.x + other, self.y + other)
else:
raise TypeError("Unsupported operand type")
p1 = Point(1, 2)
p2 = Point(3, 4)
p3 = p1 + p2
print(p3.x, p3.y) # Выведет 4, 6
p4 = p1 + 5
print(p4.x, p4.y) # Выведет 6, 7
В приведенном примере класс "Point" перегружает оператор "+". Он определяет два варианта: сложение двух объектов "Point" и сложение объекта "Point" с числом.
Метод "__add__" проверяет тип второго операнда. Если второй операнд - объект класса "Point", то складываются соответствующие координаты. Если второй операнд - число, то к координатам объекта "Point" прибавляется это число.
Если тип второго операнда не поддерживается (например, сложение объекта "Point" с другим типом), выбрасывается исключение TypeError.
Таким образом, перегрузка операторов позволяет нам определить особое поведение операторов для объектов пользовательского класса, что делает код более интуитивно понятным и удобным для использования.