Курс 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: создание и вызов
- Работа с парами ключ-значение
- Оператор in в Python
- Python Поверхностное Копирование
- Проблема сравнения словарей
- Функция pow() — возвести число в степень
- ROT13 Шифр Цезаря в Python
- Дизассемблирование Python кода
- Создание namedtuple списком полей
- Метод __irshift__ для Python
- Поиск индексов в списке
- Метод split() для разделения строк
- Переменная с нижним подчеркиванием
- Мониторинг работы программы Py-spy
- Изменение объектов в Python
- Работа с рекламными данными в Pandas
- Закрытие файла в Python
- Преобразование букв в нижний регистр
- Python: библиотеки и функции
- Декоратор для группы пользователей в Django
- Функция zip() — объединение последовательностей
- Обработка аргументов Python
- Добавление элементов в список: append() vs extend()
- Логирование с Logzero
- Работа с getopt
- Solidity для DeFi Ethereum
- Работа с базами данных SQLite
- Обработка ошибок в Python
- Работа с IP-адресами в Python
- Моржовый оператор в Python 3.8
- Сериализация и десериализация объектов
- Функции классификации комплексных чисел
- Многопроцессорное программирование в Python
- Принципы Zen Python
- Оператор is в Python
- Заказ карты Тинькофф Black
- Перебор элементов списка в Python
- Создание GUI на Tkinter
- Генераторы в Python
- Отладка в Python
- Работа с Telegram API на Python
- Метод classmethod
- Блок else в циклах.
- lru_cache оптимизация функций
- Синхронизация потоков с time.sleep()















