Курс 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. Преобразование символов с помощью map
  2. Получение размера объекта с sys.getsizeof()
  3. Структура строк в Python
  4. Декораторы для регистрации функций
  5. Установка Python3.7 и PIP
  6. Структурирование данных с Pydantic
  7. Модуль xkcd: загрузка комиксов
  8. Оптимизация создания строк
  9. Создание новых функций через partial
  10. Проверка файла .py на синтаксис.
  11. Избегайте использования goto
  12. Генерация QR-кодов с Python
  13. Извлечение новостей с newspaper3k
  14. Работа с Event() в threading
  15. Работа с пользовательским вводом
  16. Обработка исключений в Python
  17. Запуск внешнего кода в Jupyter
  18. Применение функции к списку
  19. Декоратор защиты анонимных пользователей
  20. Разность множеств
  21. Декораторы в Python
  22. Ускоренный импорт библиотек
  23. Сериализация данных в JSON с помощью json.dumps
  24. Шаблоны Flask: условия и циклы
  25. Типы возвращаемых значений в Python
  26. Установка библиотек в Python
  27. Переворот списка в Python
  28. Установка и использование Virtualenv
  29. Создание namedtuple списком полей
  30. Секреты Python
  31. Python enumerate() для работы с индексами
  32. Использование функции enumerate()
  33. lru_cache оптимизация функций
  34. Метод Enumerate() для списков
  35. Создание вкладок с TKinter
  36. Измерение времени выполнения кода с использованием time
  37. Функции range() в Python
  38. Проблема сравнения словарей
  39. Профилирование кода
  40. Python union() функция — объединение множеств
  41. Оформление кода на Python
  42. Замена текста в Python
  43. Изменение регистра данных
  44. Очистка вывода в Python
  45. Обработка исключений в Python 3

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