Курс 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"
- Автоматизация с Python
- Сортировка и обратный порядок
- Создание задания в Cron
- Метод radd для пользовательских чисел
- Безопасный доступ к значениям словаря
- Работа с аргументами командной строки
- Подсчет частотности элементов в Python
- Группы исключений в Python
- Условные выражения в Python
- Сравнение def и lambda-функций
- kwargs в Python
- Проверка однородности элементов списка
- Аннотации типов в Python
- Работа со слайсами
- Хеши в Python
- Получение ID процесса
- Разделение строки на подстроки в Python
- Методы classmethod и staticmethod
- Печать в одной строке
- Определение объема памяти объекта
- Безопасные SQL-запросы в Python 3.11
- Сравнение строк в Python
- Метод Event.wait() в Python
- Обмен переменными в Jupyter
- Мощь вложенных функций в Python
- Оптимизация параметров в Python
- Обмен данными с asyncio.Queue
- Объединение, распаковка и деструктуризация
- Поиск самого длинного слова в списке с использованием max()
- Повторение элементов списков
- Структуры данных в Python
- Функция reduce() в Python
- Вложенные функции в Python
- Аннотации типов в Python
- Структурирование данных с Pydantic
- Разбиение текста в Python
- Протокол управления контекстом
- Символ подчеркивания в Python
- Фильтрация списка чисел
- Отслеживание выполнения программы с библиотекой tqdm
- Копирование файлов с shutil()
- Оператор умножения для вектора
- Метод lt для сортировки объектов
- Метод count в Python: почему count(», ») возвращает 4?
- Оформление кода по PEP 8
- Поиск всех индексов подстроки
- Метод join() для объединения элементов строки















