Перегрузка операторов — это возможность изменять поведение встроенных операторов Python для объектов пользовательских классов. Она осуществляется путем определения специальных магических (magic) или dunder (double underscore) методов.
Вот некоторые распространенные магические методы для перегрузки операторов:
| Оператор | Магический метод | Описание |
|---|---|---|
+ | __add__(self, other) | Сложение |
- | __sub__(self, other) | Вычитание |
* | __mul__(self, other) | Умножение |
/ | __truediv__(self, other) | Деление (чистое) |
// | __floordiv__(self, other) | Деление (целочисленное) |
% | __mod__(self, other) | Остаток от деления |
** | __pow__(self, other) | Возведение в степень |
== | __eq__(self, other) | Равенство |
!= | __ne__(self, other) | Неравенство |
< | __lt__(self, other) | Меньше |
> | __gt__(self, other) | Больше |
<= | __le__(self, other) | Меньше или равно |
>= | __ge__(self, other) | Больше или равно |
len() | __len__(self) | Длина |
str() | __str__(self) | Строковое представление (для пользователя) |
repr() | __repr__(self) | Строковое представление (для разработчика) |
Пример перегрузки оператора + для класса Vector:
python
Перегрузка операторов делает код более читаемым и интуитивно понятным, позволяя использовать привычные операторы для работы с пользовательскими объектами. Однако злоупотреблять ею не стоит, чтобы не затруднять понимание кода.