Python умножает int на экземпляр в обоих направлениях - PullRequest
4 голосов
/ 22 ноября 2011

Хорошо, я создаю класс Vector (математический вектор, например, [1,3]) и хочу умножить экземпляр Vector на int. Сначала я реализовал метод __mul__, и он отлично работает. Однако это не совсем решает проблему.

a = Vector(4,3)  # Creates a vector, [4,3]
a*4     # This works fine, and prints [16,12]
4*a     # This, however, creates a TypeError (Unsupported operans type(s)).

Теперь, это полезно, но может быть проще, если оно будет работать в обоих направлениях. Есть ли способ сделать это в классе Vector?

1 Ответ

8 голосов
/ 22 ноября 2011

ваш класс Vector может предоставить __rmul__() метод умножения с отражением , который используется для реализации умножения, когда левый операнд не поддерживает операцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...