Курс 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. Класс Counter() для подсчета элементов
  2. Вычисление фазы комплексного числа
  3. Оптимизация параметров в Python
  4. Слияние словарей в Python 3.9
  5. Динамическая типизация в Python
  6. Функция format() в Python
  7. Измерение времени выполнения
  8. Применение функции к списку
  9. Синхронизация потоков с time.sleep()
  10. Измерение времени выполнения кода
  11. Проверка ввода с помощью isdigit
  12. Основы Python за 14 дней
  13. Метод setdefault() в Python
  14. Отладка в Python
  15. Расчет времени выполнения
  16. Делегирование в Python
  17. Декоратор Property в Python
  18. Работа с пакетами
  19. Преобразование списка в словарь через генератор
  20. Сортировка HTML по CSS-селектору
  21. Подсчет частотности элементов в Python
  22. Создание новых функций через partial
  23. Класс UserDict: дополнительная функциональность
  24. Поиск файлов по шаблону
  25. Модуль inspect
  26. Проектирование Singleton с метаклассом
  27. Работа с контекстными переменными
  28. Атрибуты класса и экземпляра в Python
  29. Документация функции help() в Python
  30. Метод rsub в Python: расширение функциональности вычитания
  31. Преобразование символов в нижний регистр
  32. Разделение строки в Python
  33. Метод join() с набором
  34. Python Метод sleep() из time
  35. JSON в Python: модуль, dump, dumps, load
  36. Howdoi — получение ответов из терминала
  37. Создание новых списков через list comprehensions
  38. PUT запрос для обновления данных
  39. Уникальные значения из списка
  40. Метод округления чисел
  41. Применение функции map() в Python
  42. Создание GUI на Tkinter
  43. Сериализация объектов в Python
  44. Повторение элементов списков
  45. Установка и загрузка Instaloader
  46. Установка и использование pyshorteners
  47. Инициализация переменных
  48. Улучшение читаемости кода в Python

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