Курс 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. Настройка нарезки списков
  2. Итерации в Python
  3. Оператор Walrus в Python
  4. Функция sleep() в Python
  5. Запуск Python из интерпретатора
  6. Подписка на SelectelNews в Twitter
  7. Работа с файлами в Python
  8. Сравнение объектов в Python
  9. Функции в одну строку
  10. Официальный канал Python в Telegram
  11. Оператор assert в Python
  12. Склеивание строк без циклов
  13. Перевод эмодзи и эмотиконов.
  14. Извлечение данных из JSON
  15. Оператор морж в Python 3.8
  16. Основы Python
  17. Работа с контекст-менеджером «with»
  18. Добавление Progressbar в Python
  19. Профилирование данных с Pandas.
  20. Основы Python за 14 дней
  21. Метод __iand__ для пользовательских классов
  22. Взаимодействие с sys
  23. Управление браузером с Selenium
  24. Лямбда-функции в Python
  25. Сортировка в Python
  26. Фильтрация списка чисел
  27. Операторы увеличения и уменьшения переменной
  28. Работа с временем в Python
  29. Переопределение оператора % для объектов
  30. Функции в Python
  31. Моржовый оператор в Python 3.8
  32. Копирование объектов в Python
  33. Сравнение def и lambda в Python
  34. Нан-рефлексивность в Python
  35. Разделение строки на подстроки в Python
  36. Работа с модулем random
  37. Конвертация текстовых чисел с помощью Numerizer
  38. Работа с массивами в Numpy
  39. Получение ID текущего процесса
  40. Многоточие в Python
  41. Функция rsplit() в Python
  42. Аргументы *args и **kwargs
  43. Функции-генераторы в Python
  44. Итерация по итерируемым объектам
  45. Комплексные числа в Python
  46. Оператор «not» в Python
  47. Защита данных в Python

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