Курс 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. Назначение максимального и минимального значения переменной в Python.
  3. Python UserString — создание подклассов строк
  4. Работа с датой и временем в Python
  5. Создание объекта timedelta
  6. Создание панели меню Tkinter
  7. Математические функции в Python
  8. Работа с процессами в Python
  9. Метод get() для словарей
  10. Функция __init__ в Python
  11. Создание графиков в терминале
  12. Отображение графиков в Jupyter с Matplotlib
  13. Объединение списков в Python
  14. Получение текущей даты и времени с помощью datetime
  15. Подсчет элементов с помощью Counter
  16. Создание словаря с значением по умолчанию
  17. Объединение списков в строку
  18. Перевод двоичного кода в целое число
  19. Работа с комплексными числами
  20. Установка и использование модуля «howdoi»
  21. Безопасный доступ к значениям словаря
  22. Переопределение метода divmod
  23. Модуль itertools: эффективная работа с итераторами
  24. Экспорт внешнего файла с помощью writefile
  25. Измерение времени выполнения
  26. Преобразование строк в числа с плавающей запятой
  27. Создание словаря через dict comprehension
  28. Проверка наличия элемента в списке
  29. Работа с изображениями Pillow
  30. f-строки в формате строк
  31. Форматирование вывода списков
  32. Цикл while в Python
  33. Улучшение читаемости кода в Python
  34. Работа с рекламными данными в Pandas
  35. Декораторы в Python
  36. Работа с срезами в Python
  37. Работа с YAML в Python: PyYAML.
  38. Определение размера папок в Python
  39. Работа с CSV файлами в Python
  40. Форматирование строк в Python.
  41. Создание словарей в Python
  42. Метод eq для сравнения объектов
  43. Класс UserDict: дополнительная функциональность

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