Курс 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. Параллельные вычисления в Python
  2. Сортировка с помощью key
  3. Ограничение ресурсов в Python
  4. Создание множества в Python
  5. Измерение времени выполнения кода
  6. Тернарный оператор в Python
  7. Переопределение оператора % для объектов
  8. Изменение списка срезом
  9. Ошибка NotImplemented в Python
  10. Динамическая типизация в Python
  11. Сортировка списка по индексам
  12. Сумма элементов списка
  13. Поиск HTML-элементов с BeautifulSoup
  14. Генераторы данных
  15. Запуск внешних программ с subprocess
  16. Тестирование с responses
  17. Умножение строк и списков
  18. Удаление файлов с shutil.os.remove()
  19. Импорт в Python: список all
  20. Подсказки типов в Python
  21. Безопасные SQL-запросы в Python 3.11
  22. Поток данных в Python
  23. Профилирование данных с Pandas.
  24. Склеивание строк через метод join()
  25. Локальные переменные.
  26. Сортировка данных с лямбда-функциями
  27. Создание именованных кортежей в Python
  28. Работа с модулем bisect
  29. Создание функций высшего порядка
  30. Проверка строки на палиндром
  31. Структурирование именованных констант
  32. Создание класса в Python
  33. Проверка дубликатов в Python
  34. Flask — веб-фреймворк Python
  35. Библиотека funcy: удобные утилиты
  36. Работа с срезами в Numpy
  37. Объединение словарей в Python
  38. Вставка переменных в шаблоны Flask
  39. Преобразование регистра строк
  40. Реверс строки в Python
  41. Функции с необязательными аргументами
  42. Создание namedtuple списком полей
  43. Избегайте использования goto

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