Курс 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. Автоматизация с Python
  2. Сортировка и обратный порядок
  3. Создание задания в Cron
  4. Метод radd для пользовательских чисел
  5. Безопасный доступ к значениям словаря
  6. Работа с аргументами командной строки
  7. Подсчет частотности элементов в Python
  8. Группы исключений в Python
  9. Условные выражения в Python
  10. Сравнение def и lambda-функций
  11. kwargs в Python
  12. Проверка однородности элементов списка
  13. Аннотации типов в Python
  14. Работа со слайсами
  15. Хеши в Python
  16. Получение ID процесса
  17. Разделение строки на подстроки в Python
  18. Методы classmethod и staticmethod
  19. Печать в одной строке
  20. Определение объема памяти объекта
  21. Безопасные SQL-запросы в Python 3.11
  22. Сравнение строк в Python
  23. Метод Event.wait() в Python
  24. Обмен переменными в Jupyter
  25. Мощь вложенных функций в Python
  26. Оптимизация параметров в Python
  27. Обмен данными с asyncio.Queue
  28. Объединение, распаковка и деструктуризация
  29. Поиск самого длинного слова в списке с использованием max()
  30. Повторение элементов списков
  31. Структуры данных в Python
  32. Функция reduce() в Python
  33. Вложенные функции в Python
  34. Аннотации типов в Python
  35. Структурирование данных с Pydantic
  36. Разбиение текста в Python
  37. Протокол управления контекстом
  38. Символ подчеркивания в Python
  39. Фильтрация списка чисел
  40. Отслеживание выполнения программы с библиотекой tqdm
  41. Копирование файлов с shutil()
  42. Оператор умножения для вектора
  43. Метод lt для сортировки объектов
  44. Метод count в Python: почему count(», ») возвращает 4?
  45. Оформление кода по PEP 8
  46. Поиск всех индексов подстроки
  47. Метод join() для объединения элементов строки

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