Курс 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"
- Подсчет частоты элементов с Counter
- Замыкания в Python
- Python reversed() функция
- Игра Виселица на Python
- Проверка дубликатов в Python
- Экранирование символов в Python
- Метод get() в Python
- Функция map() в Python
- Работа с контекст-менеджером «with»
- JSON в Python: модуль, dump, dumps, load
- Декодирование строк в Python
- Сортировка данных в Python
- Сохранение и загрузка модели в PyTorch
- Документирование функций в Python
- Оператор объединения словарей
- Метод invert для побитового отрицания
- Контекстный менеджер в Python
- Применение команды break
- Команда %dhist — список посещенных каталогов
- Оператор is в Python
- Переопределение метода __rshift__
- Python Тесты и Гайды
- Использование *args
- Различия символов в Python
- Работа со словарями с defaultdict из collections
- Очистка списка от False, None, 0, «»
- Работа с переменными в Python
- Переопределение метода __lshift__
- Изменения в обработке логических значений
- Сравнение def и lambda функций в Python
- Проблема сравнения словарей
- Генераторы в Python
- Определение индекса элемента списка
- Работа с прокси в Python
- Работа с NumPy
- Обработка исключений в Python
- Pillow: работа с изображениями
- Переопределение метода __and__
- Декоратор total_ordering для класса Point
- Тайное преобразование типа ключа
- Скачать видео с YouTube
- Упрощение условных выражений с тернарным оператором
- Переменная Шредингера
- Списковое включение в Python
- Расчет времени выполнения кода
- Lambda-функция в Python: использование с map() и sum()
- Блок else в Python
- Работа с collections в Python.















