Курс 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
  2. Поиск подстроки в строке
  3. Модуль future Python
  4. Метод __ilshift__ для битового сдвига влево
  5. Выключение компьютера с помощью Python
  6. Создание новой даты в Python
  7. Генераторные функции в Python
  8. Сравнение объектов в Python
  9. Создание новых списков в Python
  10. Установка библиотек в Python
  11. Defaultdict в Python
  12. Python Тесты и Гайды
  13. Combobox в Tkinter
  14. Профилирование с Pandas
  15. Оператор break в Python
  16. Поиск частых элементов в списке
  17. Сортировка в Python
  18. Работа с NumPy массивами
  19. Monkey Patching в Python
  20. Разделение строки на пары ключ-значение.
  21. Работа со строками в Python
  22. Регистрация на TenChat
  23. Метод join для наборов
  24. Распаковка с оператором *
  25. Проверка списка: any() и all()
  26. Преобразование объекта в строку
  27. Создание новых функций с помощью functools.partial
  28. Гибкие функции Python
  29. Декораторы в Python
  30. Распаковка аргументов в Python
  31. Операторы увеличения и уменьшения переменной
  32. Конкатенация строк с методом join()
  33. Работа с контекст-менеджером «with»
  34. Декодирование строк в Python
  35. Изменение логики работы с временем
  36. Разница между датами
  37. Операторы += в Python
  38. Функции-генераторы в Python
  39. Извлечение данных из JSON
  40. Присвоение и ссылки
  41. Установка random seed в Python
  42. Метод __complex__ в Python
  43. Метод __float__ в Python

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