Курс 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. Умножение строк и списков
  2. Создание генераторов
  3. Считывание бинарного файла в Python
  4. Отладка регулярных выражений в Python
  5. Форматирование вывода списков
  6. Добавление элементов в список: append() vs extend()
  7. Функция zip() в Python
  8. Проверка версии Python
  9. Декораторы в Python
  10. Класс-оболочка для словарей
  11. Вызов внешних программ в Python с помощью sh
  12. Многострочные комментарии в Python
  13. Векторизация в Python с NumPy.
  14. Метод __int__ в Python
  15. Сложение матриц в NumPy
  16. Множественные конструкторы в Python
  17. Расширение операции побитового «и» в Python
  18. Переопределение метода len
  19. Вложенные функции в Python
  20. Извлечение статей с newspaper3k
  21. Использование метода lower()
  22. Функция reversed() в Python
  23. Методы Python для работы с данными
  24. Оператор умножения для вектора
  25. Регистрация на курсы SF Education
  26. Методы shutil для работы с файлами
  27. inspect в Python: анализ кода
  28. Работа с кортежами
  29. Работа с collections в Python.
  30. Python: изменяемые и неизменяемые коллекции
  31. Работа с IP-адресами в Python
  32. Получение имени функции с помощью inspect
  33. Атрибуты массивов в Numpy
  34. Сортировка элементов с OrderedDict
  35. Срез списка в Python
  36. Список импортированных модулей в Python
  37. Объединение словарей в Python
  38. Поиск с помощью регулярных выражений
  39. Объединение объектов в Python
  40. Генерация резюме в Gensim
  41. Работа с файлами в Python
  42. Построение графиков в Matplotlib
  43. Оформление кода по PEP 8
  44. Зарезервированные слова в Python
  45. Создание объекта timedelta
  46. Создание списка через итерацию
  47. Исключение NotImplementedError

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