Курс 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. Проверка условий: all и any
  2. Операторы сравнения в Python
  3. Форматирование строк в Python
  4. Уникальные значения из списка
  5. Логические значения в Python
  6. Срез в Python
  7. Сортировка и разворот списка
  8. JSON-esque в Python
  9. Многопроцессорное программирование в Python
  10. Обновление и получение данных в SQLite
  11. Перевод двоичного кода в целое число
  12. Отладка утечек памяти в Python
  13. Инверсия списка и строки
  14. Официальный канал Python в Telegram
  15. Функция format() в Python
  16. Изменение списка срезами
  17. Оператор space-invader
  18. Настройка вывода в Numpy
  19. Встраивание HTML в Jupyter Notebook
  20. Работа с deque из collections
  21. Работа с контекстными переменными
  22. Копирование словарей и списков в Python
  23. Блок else в циклах.
  24. Создание объекта timedelta
  25. Протокол управления контекстом
  26. Переопределение унарных операторов
  27. Динамическая типизация в Python
  28. Асинхронное выполнение задач в Python
  29. Декоратор total_ordering для класса Point
  30. Очистка списка от False, None, 0, «»
  31. Преобразование букв в нижний регистр
  32. Отображение HTML кода в Python
  33. Создание namedtuple из словаря
  34. Сложение матриц в NumPy
  35. Работа с функцией next() в Python
  36. Работа с модулем Calendar
  37. Моржовый оператор в Python 3.8
  38. Методы shutil для работы с файлами
  39. Добавление цвета в консоли
  40. Colorama: окрашивание текста в Python
  41. Оператор += для объединения строк
  42. Динамическая типизация в Python
  43. Создание новых списков
  44. Тестирование функции сложения
  45. Декоратор @override
  46. Метод __ixor__ для побитового исключающего ИЛИ
  47. Методы в Python
  48. Метод invert для побитового отрицания

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