Курс 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"

  1. Обработка ошибок в Python
  2. Установка Home Assistant
  3. Разбиение строки в Python
  4. Python defaultdict добавление ключа
  5. Обработка исключения UnboundLocalError
  6. Объединение словарей в Python
  7. Функции any() и all() в Python
  8. Метод rsub для пользовательских чисел
  9. Установка переменной среды в Python
  10. Python Аргументы по умолчанию
  11. Именованные аргументы в Python
  12. EMOT преобразование эмодзи в текст
  13. Проверка типов с помощью isinstance
  14. Операторы присваивания в Python
  15. Мощь вложенных функций в Python
  16. Деление в Python
  17. Динамическая типизация в Python
  18. Python и Юникод: работа с цифрами
  19. Зарезервированные слова в Python
  20. Обратное распространение ошибки
  21. Копирование словарей и списков в Python
  22. Удаление элементов из списка в Python
  23. Функция pow() — возвести число в степень
  24. Создание словарей с defaultdict()
  25. F-строки в Python 3.8
  26. Переопределение метода __lshift__
  27. Работа со строками в Python
  28. Использование type hints
  29. Проверка окончания строки с помощью str.endswith()
  30. Преобразование документов в PDF с помощью Spire.Office
  31. Получение текущего времени в Python
  32. Создание уникального множества
  33. Частичное применение функций в Python
  34. Мониторинг памяти с Pympler
  35. Преобразование строк в числа с плавающей запятой
  36. Цикл for в Python
  37. Многопоточность и асинхронное программирование в Python
  38. Капитализация строк
  39. Преобразование чисел в восьмеричную строку
  40. Генераторы в Python
  41. Создание пустых функций и классов в Python
  42. Работа с процессами в Python
  43. Преобразование списков в словарь
  44. Метод __irshift__ для побитового сдвига вправо

Marketello читают маркетологи из крутых компаний