Курс 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"
- Константы в модуле cmath
- split() — разделение строки
- Создание тестовых данных с Faker
- Оператор continue в Python
- Объединение словарей в Python
- Поиск шаблона в строке
- Работа с атрибутом dict
- Лямбда-функции в Python
- Создание графики с черепахой
- Сохранение и загрузка модели в PyTorch
- Оператор * в Python
- Оператор «моржа» (Walrus Operator)
- Округление банкира в Python
- Оператор @ для умножения матриц
- Метод bool() в Python
- Принципы программирования
- Логирование с Loguru
- Реверс строки и списка в Python.
- Управление мышью и клавиатурой с Pyautogui
- Установка и использование pyshorteners
- Метод __iand__ для пользовательских классов
- Строки в Python: апострофы и кавычки
- Работа с изменяемыми коллекциями
- Возвращение нескольких значений через кортеж или класс
- Срез в Python
- Python: Фильтрация списков с помощью filter()
- Скрытие вывода данных
- Многострочные комментарии в Python
- Логирование в Python
- Замена текста с помощью sub
- Парсинг веб-страниц с Beautiful Soup
- Генераторы в Python
- Создание даты из строки ISO
- Методы HTTP запросов в Flask
- Блок try…finally в Python
- Оператор объединения словарей
- Установка и загрузка Instaloader
- Импортирование в Python
- Классы данных в Python
- Генераторы в Python
- Переворот строки с помощью срезов
- Функции all и any в Python
- Выражения-генераторы в Python
- Операторы Splat и splatty-splat
- Декоратор @override
- Декоратор total_ordering для класса Point
- Работа со строками в Python
- Карта бомбоубежищ в Москве и Питере
- inspect в Python: анализ кода















