Курс 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. Исключение NotImplementedError
  2. Оптимизация памяти с помощью __slots__
  3. Многопоточность и асинхронное программирование в Python
  4. Освоение Python
  5. Определение функций с необязательными аргументами
  6. Функции в Python: создание и вызов
  7. Defaultdict в Python
  8. Удаление дубликатов с сохранением порядка с помощью dict.fromkeys
  9. Создание OrderedDict
  10. Ввод нескольких значений
  11. Лямбда-функции для min/max
  12. Работа с множествами в Python
  13. Настройка Cron
  14. Фильтрация списка от «ложных» значений
  15. Нахождение отличий в списках
  16. Python: цикл for и оператор присваивания
  17. Определение объема памяти объекта
  18. Срез в Python
  19. Dict Comprehension в Python
  20. Сериализация объектов в Python
  21. Переопределение оператора % для объектов
  22. Названия переменных
  23. Инверсия списка/строки в Python
  24. Подписка на каналы разработчиков
  25. Оператор match в Python
  26. Работа с датами в Python
  27. Работа с очередями в Python
  28. Поиск шаблона в начале строки
  29. Объединение строк с помощью метода join
  30. Разделение строки с помощью split()
  31. Непрерывная проверка в Python
  32. Многоточие в Python
  33. Переопределение метода __and__
  34. Участие в LP стейкинге Waves
  35. Равенство и идентичность в Python
  36. Применение функции к каждому элементу списка
  37. Преобразование регистра строк
  38. Резервирование символов в Python
  39. Функции all и any в Python
  40. Объединение словарей в Python
  41. Оператор continue в Python
  42. Python UserString — создание подклассов строк
  43. Работа с YAML в Python: PyYAML.
  44. Измерение времени выполнения кода
  45. Преобразование типов данных в set comprehension

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