Курс 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. Работа с itertools
  2. Работа с файловой системой в Python
  3. Сравнение строк в Python
  4. Переопределение метода delitem в Python
  5. Логирование с Logzero
  6. Переопределение метода __floordiv__
  7. Декоратор total_ordering для класса Point
  8. Обработка исключений
  9. Логические значения в Python
  10. Метод count() для списков
  11. Оператор space-invader
  12. Сравнение строк в Python
  13. Метод __int__ в Python
  14. Поиск анаграмм с Counter
  15. Основы слова
  16. Отладка в Python
  17. Работа с множествами в Python
  18. Таймер обратного отсчета
  19. Парсинг веб-страниц с Beautiful Soup
  20. Избегайте использования goto
  21. Разделение функций на этапы
  22. Создание тестовых данных с Faker
  23. Метод get для словаря
  24. TypedDict для kwargs в Python 3.12
  25. Flask: создание веб-приложений
  26. Python Тесты и Гайды
  27. Работа с timedelta в Python
  28. Многоточие в Python
  29. Создание виртуальной среды
  30. Основные методы NumPy
  31. Методы Python для работы с данными
  32. Проверка на палиндром
  33. Открытие и запись файлов
  34. Распаковка элементов массива
  35. Декораторы в Python
  36. Обработка исключений в Python
  37. Модуль sys: основы
  38. Функция rsplit() в Python
  39. Печать календаря
  40. Установка и использование библиотеки google
  41. Сериализация объектов в Python
  42. Поиск индекса элемента в списке
  43. Функция zip() в Python
  44. Основные функции и модули Python
  45. Импорт модуля из другого каталога
  46. Оптимизация сравнения в Python

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