Курс Python → Переопределение метода sub

Метод sub(self, other) в Python позволяет определить поведение объекта при использовании оператора вычитания -. Когда мы переопределяем этот метод в нашем пользовательском классе, мы можем указать, как объект должен вести себя при вычитании от другого объекта. Например, если мы работаем с векторами, мы можем определить операцию вычитания так, чтобы вычитались соответствующие координаты векторов.

В случае, если операнд other также является объектом типа Vector, мы можем вычитать соответствующие координаты векторов и вернуть новый объект Vector, представляющий разность. Если other не является вектором, мы можем вызвать исключение TypeError, указав, что данная операция не поддерживается.

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


class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def sub(self, other):
        if isinstance(other, Vector):
            return Vector(self.x - other.x, self.y - other.y)
        else:
            raise TypeError("Unsupported operation")

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

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

Автор урока

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

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

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

  1. Настройка Cron
  2. Функция enumerate() в Python
  3. Работа с GitHub в Telegram
  4. Работа с контекстными менеджерами
  5. Работа с библиотекой requests
  6. Операторы увеличения и уменьшения переменной
  7. Применение функции к элементам списка
  8. Профилирование данных с Pandas.
  9. Измерение времени выполнения с помощью time
  10. Python: отсутствие точек с запятыми
  11. Пространство имен в Python
  12. Установка Home Assistant
  13. Работа со слайсами
  14. Методы в Python
  15. Объединение строк с помощью метода join
  16. Создание спинбокса в tkinter
  17. Функция print() — вывод информации
  18. Работа с defaultdictами в Python
  19. Множества и frozenset
  20. Методы split() и join() — Python строк.
  21. Проверка запуска скрипта или импорта модуля
  22. Декораторы в Python
  23. Метод difference_update() — разность множеств
  24. Получение ID текущего процесса
  25. Преобразование кортежа в словарь.
  26. Извлечение аудио из видео
  27. Измерение времени выполнения кода
  28. Сохранение Unicode в JSON
  29. Передача аргументов через **arguments
  30. Оператор «моржа» (Walrus Operator)
  31. Замыкания в Python
  32. Измерение времени выполнения кода с помощью time
  33. Переворот строки с использованием цикла
  34. Многострочные комментарии в Python
  35. Глобальные переменные в Python
  36. Копирование файлов с shutil()
  37. Обход словаря в Python
  38. Переопределение оператора % для объектов
  39. Работа с пакетами
  40. Лямбда-функции в Python
  41. Работа с OpenCV
  42. Работа с кортежами в Python
  43. Просмотр внешних файлов в %pycat
  44. Список переменных в Python
  45. Освоение Python
  46. Генерация случайных чисел в Python
  47. Установка переменной среды в Python

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