Курс 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. Изменение списка срезами
  2. Установка и использование Logzero
  3. Создание новых функций с помощью functools.partial
  4. Безопасные SQL-запросы в Python 3.11
  5. Избегайте пустого списка
  6. Ветвление выражения в Python
  7. Списковое включение в Python
  8. Проверка ввода с помощью isdigit
  9. Настройка Cron
  10. Работа с Requests для HTTP-запросов
  11. Установка переменной среды в Python
  12. Работа с библиотекой xkcd
  13. Доступ к локальным переменным
  14. Python: Фильтрация списков с помощью filter()
  15. Flask — веб-фреймворк Python
  16. Работа с NumPy.linalg
  17. Python и Монти Пайтон
  18. Работа с кортежами в Python
  19. Анализ кода — Python
  20. Метод rmatmul для обратного матричного умножения
  21. Многострочные комментарии в Python
  22. Установка random seed в Python
  23. Функции all и any в Python
  24. Numpy: использование Ellipsis
  25. Вычисление времени выполнения
  26. Concrete Paths — метод .with_suffix()
  27. Сравнение неупорядоченных списков
  28. Частичное применение функций в Python
  29. Отношения подклассов в Python
  30. Срезы в Numpy
  31. Переименование файлов в Python
  32. Улучшенные подсказки для импорта в Python 3.12
  33. Преобразование строк в числа в Python
  34. Python 3.12: Псевдонимы типов
  35. Показ всплывающих окон Tkinter
  36. Скрытие вывода данных
  37. Установка пакета в Python
  38. Методы Python для работы с данными
  39. Списки в Python: синтаксис представления
  40. Множественное наследование в Python
  41. Участие в LP стейкинге Waves
  42. Структурирование именованных констант
  43. Вывод с переменной через запятую
  44. Метод сравнения объектов в Python
  45. Загрузка постов Instagram

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