Курс Python → Перегрузка операторов в Python

Перегрузка операторов в Python позволяет изменять поведение встроенных операторов таким образом, чтобы они могли работать с пользовательскими объектами. Это делает код более читаемым и удобным, так как позволяет использовать знакомые операторы для различных типов данных. Например, мы можем определить специальный метод __add__ для класса, который будет определять поведение оператора + для объектов этого класса.

Давайте рассмотрим пример с классом Vector, который представляет собой вектор в двумерном пространстве. Мы можем определить метод __add__ для этого класса, чтобы можно было складывать два вектора с помощью оператора +.


class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        
    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)
        
v1 = Vector(2, 3)
v2 = Vector(4, 5)
result = v1 + v2
print(result.x, result.y)  # Выведет: 6 8

В этом примере метод __add__ определен для класса Vector, который принимает второй вектор в качестве аргумента и возвращает новый вектор, представляющий собой сумму двух векторов. Теперь мы можем использовать оператор + для складывания объектов класса Vector.

Перегрузка операторов не ограничивается только арифметическими операторами. Мы также можем перегрузить операторы сравнения, индексации, присваивания и другие операторы. Это позволяет гибко работать с объектами различных типов и упрощает написание кода. Помните, что перегрузку операторов следует использовать разумно и в соответствии с общепринятыми стандартами.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. TON Smart Challenge #2: участие и подготовка
  2. Метод get() в Python
  3. Docstring в Python
  4. Функция divmod() в Python
  5. Обработка ошибок в Python
  6. Работа со словарями с defaultdict из collections
  7. Логические операторы в Python
  8. Проектирование Singleton с метаклассом
  9. Тестирование модели в PyTorch
  10. Операции с массивами в NumPy
  11. Декодирование строк в Python
  12. Модуль Antigravity в Python 3
  13. Утечки переменных цикла в Python 3.x
  14. Асинхронный код в Python
  15. Повторение элементов в Python
  16. Абстракции словарей и множеств в Python
  17. Поиск простых чисел
  18. Логирование с Logzero
  19. Настройка Cron
  20. f-строки в формате строк
  21. Функции map, filter и reduce
  22. Инверсия списков и строк в Python
  23. Работа с zip()
  24. Сортировка HTML-элементов
  25. Использование подчеркивания в REPL
  26. Объединение строк с помощью метода join
  27. Хешируемые ключи в Python
  28. Бесконечная проверка в Python
  29. Поиск повторов в списке
  30. Dict Comprehension в Python
  31. Метод rpow в Python
  32. Функция zip() в Python
  33. Объединение итераторов
  34. Лямбда-функции в Python
  35. globals и locals
  36. Отладчик pdb: начало работы
  37. Округление банкира в Python
  38. Вывод сложных структур данных с помощью pprint
  39. Работа с файлами в Python
  40. Создание объекта времени
  41. Построение графиков в Matplotlib
  42. Метод __iand__ для пользовательских классов
  43. Работа с очередями в Python
  44. История Python
  45. Просмотр атрибутов и методов класса

Marketello читают маркетологи из крутых компаний