Курс 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. Обработка исключения UnboundLocalError
  2. Зарезервированные слова в Python
  3. Списковые включения в Python
  4. Операция += для списков
  5. Создание уникального проекта
  6. Генерация UUID в Python
  7. Работа с YAML в Python
  8. Аннотации типов в Python
  9. Абстракции словарей и множеств в Python
  10. Переворот последовательности
  11. Декоратор Property в Python
  12. Проблемы с dict в Python
  13. Экранирование символов в Python
  14. Присвоение и ссылки
  15. Преобразование данных в Python
  16. Решение переменной Шредингера
  17. Операторы присваивания в Python
  18. Поиск уникальных и повторяющихся элементов
  19. Вычисление фазы комплексного числа
  20. Удаление и повторная вставка ключа в OrderedDict
  21. Импорт модулей в Python 3.12
  22. Оператор @ для умножения матриц
  23. Функции all() и any() в Python
  24. Генерация резюме в Gensim
  25. Работа с датами в Python
  26. Нахождение разницы между списками в Python
  27. Обновление шаблона base.html
  28. Компиляция регулярных выражений
  29. Функция product() в Python
  30. Лямбда-функции в Python
  31. Howdoi — получение ответов из терминала
  32. Введение в PyTorch
  33. Модуль pprint: улучшение вывода данных
  34. Проверка на истинность объектов в Python
  35. Настройка нарезки списков
  36. Форматирование строк в Python
  37. Создание генераторов
  38. Поиск повторов в списке
  39. Блок try-except-else
  40. Метод radd для пользовательских чисел
  41. Объединение словарей в Python
  42. Расчет времени выполнения
  43. Создание именованных кортежей в Python
  44. Отрицательные индексы списков в Python
  45. Удаление специальных символов с помощью re.sub
  46. Аннотации типов в Python
  47. Проверка окончания строки с помощью str.endswith()

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