Курс 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. Библиотека wikipedia для Python
  2. Удаление элемента из списка
  3. Измерение времени выполнения кода с использованием time
  4. enumerate() в Python для работы с индексами
  5. Определение функций с необязательными аргументами
  6. Обмен данными с asyncio.Queue
  7. Замена текста с помощью sub
  8. Наследование в программировании
  9. Работа с NumPy
  10. Функции в Python
  11. Методы сравнения множеств
  12. Профилирование кода
  13. Преобразование в float
  14. Создание обратного итератора
  15. Инициализация структур данных
  16. Тестирование времени с Freezegun
  17. Работа со строками в Python
  18. Определение наиболее частого элемента с помощью collections.Counter
  19. Ошибка NotImplemented в Python
  20. Оптимизация памяти с __slots__
  21. Разделение строки в Python
  22. Удаление элементов во время итерации
  23. Проверка подстроки в строке с помощью in
  24. Справка по импортированным модулям
  25. Определение локальных переменных в Python
  26. Освоение Python
  27. Методы split() и join() — Python строк.
  28. Игра «Виселица» на Python
  29. Итерация по коллекции в Python
  30. Основные операции с Numpy
  31. Обратное распространение ошибки
  32. Хешируемые ключи в Python
  33. Атрибуты массивов в Numpy
  34. Создание класса в Python
  35. Логирование с Logzero
  36. Colorama: окрашивание текста в Python
  37. Модуль os: работа с файлами и папками
  38. Управление пакетами с pip
  39. Пустой оператор pass в Python
  40. Работа с дробями в Python
  41. PrettyTable: создание таблицы
  42. Форматирование строк в Python
  43. Методы shutil для работы с файлами
  44. Применение функции map() в Python

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