Курс 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. Создание таблиц в Python с PrettyTable
  2. Проверка наличия элемента в списке
  3. Генераторы и сеты в Python
  4. Удаление ссылок в Python
  5. Вычисление разности множеств в Python
  6. Отображение графиков в Jupyter с Matplotlib
  7. Списки в Python: основы
  8. globals и locals
  9. JMESPath в Python
  10. Управление импортом в Python
  11. Форматирование данных с помощью pprint
  12. Сравнение строк в Python
  13. Имена объектов в Python
  14. Работа с collections в Python.
  15. Форматирование строк в Python
  16. Создание вложенного генератора
  17. Работа с Enum в Python3.
  18. Работа с модулем glob в Python
  19. Переворот строки
  20. Функции map() и reduce() в Python
  21. Работа с набором данных CIFAR10 в PyTorch
  22. Создание и использование ChainMap
  23. Управление сессиями в Python
  24. Beautiful Soup — извлечение данных из HTML
  25. Векторизация в Python с NumPy.
  26. Структуры данных в Python
  27. Оболочка Python
  28. Работа с itertools
  29. Тестирование функции сложения
  30. Python: динамическая типизация и проверка типов
  31. Список переменных в Python
  32. Функции в Python
  33. Обход элементов в Python
  34. Работа с SQLite в Python
  35. Расширение операции побитового «и» в Python
  36. Реализация операции -= для пользовательского класса
  37. Изменение элемента списка
  38. Работа с NumPy.linalg
  39. Показ всплывающих окон Tkinter
  40. Управление памятью в Python
  41. Python: возвращение нескольких значений
  42. Непрерывная проверка в Python
  43. Работа со словарями в Python
  44. Оператор += для объединения строк
  45. Метод rmatmul для пользовательских матриц
  46. Работа с комбинациями в Python.

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