Курс 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"
- Декоратор total_ordering для класса Point
- Переопределение метода __or__()
- Пустой оператор pass в Python
- Асинхронный код в Python
- Операции с датами в Python
- Запуск внешних программ с subprocess
- Поиск повторов в списке
- kwargs в Python
- Метод join() для объединения строк
- Именованные кортежи в Python
- Удаление элементов из списка в Python
- Операции с комплексными числами
- Метод join() для объединения элементов
- Сортировка данных с лямбда-функциями
- Python itertools combinations() — группировка элементов
- Python Enum Weekday Usage
- Работа с многоуровневыми словарями в Python
- Роль ключевого слова self
- Обход словаря в Python
- Python: библиотеки и функции
- Генераторы по генератору
- Обрезка изображения с Pillow
- Аннотации типов в Python
- Работа с SQLite в Python
- Основы слова
- Объединение словарей в Python
- Тип данных TypeVarTuple
- Логирование с Logzero
- SciPy: широкий функционал для математических операций
- Декоратор Ajax required
- Настройка нарезки списков
- Создание даты из строки ISO
- Циклы for в Python
- Принципы программирования
- Именованные аргументы в Python
- Создание именованных кортежей в Python
- Работа со словарями Python
- Логические значения в Python
- Изменение регистра данных
- Умножение строк и списков
- Работа со случайными элементами
- Принцип одной функции
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Поиск частого элемента
- Нарезка списков в Python















