Курс 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"
- Измерение времени выполнения кода
- Оператор is в Python
- Функция zip() в Python
- Разность множеств
- Преобразование Word в PDF с Spire.Doc
- Оператор in в Python
- Переворот строки
- Избегание изменяемых аргументов
- Хешируемые ключи в Python
- Показ всплывающих окон Tkinter
- Документирование функций в Python
- Основы работы со списками
- Генераторы в Python
- Декораторы в Python
- Создание именованных кортежей в Python
- Библиотека funcy: удобные утилиты
- Numpy: использование Ellipsis
- Метод join() для объединения строк
- Mad Libs Generator
- Метод __irshift__ для побитового сдвига вправо
- Аннотации типов в Python
- Цикл while в Python
- Python itertools combinations() — группировка элементов
- Декоратор Property в Python
- Проблема с изменяемыми аргументами
- Функция zip() для объединения списков
- Переопределение оператора % для объектов
- Многоточие в Python
- Конкатенация строк с join() в Python
- Обработка ошибки IndexError
- Counter() — подсчет элементов
- Работа с zip-архивами в Python
- Функция zip() в Python
- Структура строк в Python
- Проверка типа объекта в Python
- Преобразование документов в PDF с помощью Spire.Office
- Срезы в Python
- Выражения-генераторы в Python
- Конкатенация строк в Python
- Методы и функции в Python
- Перехват исключений в Python
- Определение индекса элемента списка
- inspect в Python: анализ кода
- Функция zip() в Python
- Чтение и запись TOML-конфигов
- Взаимодействие с sys















