Курс 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"
- Проверка условий: all и any
- Операторы сравнения в Python
- Форматирование строк в Python
- Уникальные значения из списка
- Логические значения в Python
- Срез в Python
- Сортировка и разворот списка
- JSON-esque в Python
- Многопроцессорное программирование в Python
- Обновление и получение данных в SQLite
- Перевод двоичного кода в целое число
- Отладка утечек памяти в Python
- Инверсия списка и строки
- Официальный канал Python в Telegram
- Функция format() в Python
- Изменение списка срезами
- Оператор space-invader
- Настройка вывода в Numpy
- Встраивание HTML в Jupyter Notebook
- Работа с deque из collections
- Работа с контекстными переменными
- Копирование словарей и списков в Python
- Блок else в циклах.
- Создание объекта timedelta
- Протокол управления контекстом
- Переопределение унарных операторов
- Динамическая типизация в Python
- Асинхронное выполнение задач в Python
- Декоратор total_ordering для класса Point
- Очистка списка от False, None, 0, «»
- Преобразование букв в нижний регистр
- Отображение HTML кода в Python
- Создание namedtuple из словаря
- Сложение матриц в NumPy
- Работа с функцией next() в Python
- Работа с модулем Calendar
- Моржовый оператор в Python 3.8
- Методы shutil для работы с файлами
- Добавление цвета в консоли
- Colorama: окрашивание текста в Python
- Оператор += для объединения строк
- Динамическая типизация в Python
- Создание новых списков
- Тестирование функции сложения
- Декоратор @override
- Метод __ixor__ для побитового исключающего ИЛИ
- Методы в Python
- Метод invert для побитового отрицания















