Курс Python → Оператор умножения для вектора
Метод mul(self, other) в классе Vector позволяет определить поведение объекта при использовании оператора умножения *. Когда операнд other является числом (целым или вещественным), соответствующие координаты вектора умножаются на это число, и возвращается новый объект Vector, представляющий результат умножения. Если other не является числом, вызывается исключение TypeError, указывающее, что операция не поддерживается.
Метод rmul(self, other) в классе Vector поддерживает коммутативность умножения, что позволяет умножать число на вектор (например, 3 * v). Этот метод просто вызывает метод mul, чтобы обеспечить одинаковое поведение для обеих форм умножения.
Этот лайфхак полезен при работе с пользовательскими типами данных, такими как векторы, где определение операции умножения имеет смысл. Переопределение методов mul и rmul позволяет объекту поддерживать стандартную математическую операцию умножения в Python.
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def mul(self, other):
if isinstance(other, (int, float)):
return Vector(self.x * other, self.y * other)
else:
raise TypeError("Unsupported operation")
def rmul(self, other):
return self.mul(other)
Другие уроки курса "Python"
- Исключение NotImplementedError
- Оптимизация памяти с помощью __slots__
- Многопоточность и асинхронное программирование в Python
- Освоение Python
- Определение функций с необязательными аргументами
- Функции в Python: создание и вызов
- Defaultdict в Python
- Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
- Создание OrderedDict
- Ввод нескольких значений
- Лямбда-функции для min/max
- Работа с множествами в Python
- Настройка Cron
- Фильтрация списка от «ложных» значений
- Нахождение отличий в списках
- Python: цикл for и оператор присваивания
- Определение объема памяти объекта
- Срез в Python
- Dict Comprehension в Python
- Сериализация объектов в Python
- Переопределение оператора % для объектов
- Названия переменных
- Инверсия списка/строки в Python
- Подписка на каналы разработчиков
- Оператор match в Python
- Работа с датами в Python
- Работа с очередями в Python
- Поиск шаблона в начале строки
- Объединение строк с помощью метода join
- Разделение строки с помощью split()
- Непрерывная проверка в Python
- Многоточие в Python
- Переопределение метода __and__
- Участие в LP стейкинге Waves
- Равенство и идентичность в Python
- Применение функции к каждому элементу списка
- Преобразование регистра строк
- Резервирование символов в Python
- Функции all и any в Python
- Объединение словарей в Python
- Оператор continue в Python
- Python UserString — создание подклассов строк
- Работа с YAML в Python: PyYAML.
- Измерение времени выполнения кода
- Преобразование типов данных в set comprehension















