Курс 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. Константы в модуле cmath
  2. split() — разделение строки
  3. Создание тестовых данных с Faker
  4. Оператор continue в Python
  5. Объединение словарей в Python
  6. Поиск шаблона в строке
  7. Работа с атрибутом dict
  8. Лямбда-функции в Python
  9. Создание графики с черепахой
  10. Сохранение и загрузка модели в PyTorch
  11. Оператор * в Python
  12. Оператор «моржа» (Walrus Operator)
  13. Округление банкира в Python
  14. Оператор @ для умножения матриц
  15. Метод bool() в Python
  16. Принципы программирования
  17. Логирование с Loguru
  18. Реверс строки и списка в Python.
  19. Управление мышью и клавиатурой с Pyautogui
  20. Установка и использование pyshorteners
  21. Метод __iand__ для пользовательских классов
  22. Строки в Python: апострофы и кавычки
  23. Работа с изменяемыми коллекциями
  24. Возвращение нескольких значений через кортеж или класс
  25. Срез в Python
  26. Python: Фильтрация списков с помощью filter()
  27. Скрытие вывода данных
  28. Многострочные комментарии в Python
  29. Логирование в Python
  30. Замена текста с помощью sub
  31. Парсинг веб-страниц с Beautiful Soup
  32. Генераторы в Python
  33. Создание даты из строки ISO
  34. Методы HTTP запросов в Flask
  35. Блок try…finally в Python
  36. Оператор объединения словарей
  37. Установка и загрузка Instaloader
  38. Импортирование в Python
  39. Классы данных в Python
  40. Генераторы в Python
  41. Переворот строки с помощью срезов
  42. Функции all и any в Python
  43. Выражения-генераторы в Python
  44. Операторы Splat и splatty-splat
  45. Декоратор @override
  46. Декоратор total_ordering для класса Point
  47. Работа со строками в Python
  48. Карта бомбоубежищ в Москве и Питере
  49. inspect в Python: анализ кода

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