Курс 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. Декоратор total_ordering для класса Point
  2. Переопределение метода __or__()
  3. Пустой оператор pass в Python
  4. Асинхронный код в Python
  5. Операции с датами в Python
  6. Запуск внешних программ с subprocess
  7. Поиск повторов в списке
  8. kwargs в Python
  9. Метод join() для объединения строк
  10. Именованные кортежи в Python
  11. Удаление элементов из списка в Python
  12. Операции с комплексными числами
  13. Метод join() для объединения элементов
  14. Сортировка данных с лямбда-функциями
  15. Python itertools combinations() — группировка элементов
  16. Python Enum Weekday Usage
  17. Работа с многоуровневыми словарями в Python
  18. Роль ключевого слова self
  19. Обход словаря в Python
  20. Python: библиотеки и функции
  21. Генераторы по генератору
  22. Обрезка изображения с Pillow
  23. Аннотации типов в Python
  24. Работа с SQLite в Python
  25. Основы слова
  26. Объединение словарей в Python
  27. Тип данных TypeVarTuple
  28. Логирование с Logzero
  29. SciPy: широкий функционал для математических операций
  30. Декоратор Ajax required
  31. Настройка нарезки списков
  32. Создание даты из строки ISO
  33. Циклы for в Python
  34. Принципы программирования
  35. Именованные аргументы в Python
  36. Создание именованных кортежей в Python
  37. Работа со словарями Python
  38. Логические значения в Python
  39. Изменение регистра данных
  40. Умножение строк и списков
  41. Работа со случайными элементами
  42. Принцип одной функции
  43. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  44. Поиск частого элемента
  45. Нарезка списков в Python

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