Курс 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. Удаление файлов с shutil.os.remove()
  2. Применение функции map() в Python
  3. Метод title() в Python
  4. Цикл while в Python
  5. Списковое включение в Python
  6. Объединение словарей в Python
  7. Генерация QR-кодов с Python
  8. Очистка данных с Pandas
  9. Нан-рефлексивность в Python
  10. Сохранение и загрузка модели в PyTorch
  11. Обрезка изображения с Pillow
  12. Генераторы списков
  13. Решение переменной Шредингера
  14. Логический оператор «and» в Python
  15. Возврат нескольких значений
  16. Проверка типов с помощью isinstance
  17. Условные выражения в Python
  18. Генераторы в Python
  19. Удаление элементов из списка в Python.
  20. Основы работы с os
  21. Создание списков в Python
  22. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  23. Переопределение метода __rshift__
  24. Преобразование данных в Python
  25. Многопоточность и асинхронное программирование в Python
  26. Генераторы в Python
  27. Удаление элементов из списка в Python
  28. Поиск уникальных и повторяющихся элементов
  29. Python enumerate() использование
  30. Создание пользовательской коллекции в Python
  31. Лямбда-функции в цикле
  32. Удаление элемента из списка в Python
  33. Создание новых списков в Python
  34. Python union() функция — объединение множеств
  35. Функция zip() в Python
  36. Извлечение статей с newspaper3k
  37. Работа с контекстными переменными
  38. Руководство по использованию Colorama
  39. Работа с WindowsPath()
  40. Повторение элементов списков
  41. Отношения подклассов в Python
  42. Работа с модулем bisect
  43. Создание объекта времени
  44. Отладчик pdb: начало работы
  45. Избегайте использования goto
  46. Загрузка постов Instagram
  47. Работа с комплексными числами
  48. Оформление кода по PEP 8

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