Порядок объектов при перегрузке арифметических операторов

допустим, мне для чего-то нужно сделать свой класс, в котором я неким образом (не влияя на логику арифметических операций) добавляю что-нибудь.

def __mul__(self, other):
   ....
   return self * other

a = Class(10)

a * 10 # 100

но что-делать, если я хочу переставить множители

10 * a # unsupported operand type(s) for *: 'int' and 'Class'

Такая ошибка логична, но крайне не удобна - потому что в разных формулах приходится учитывать порядок множителей. Есть ли варианты обойти эту проблему?


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Определите __rmul__(self, other) чтобы поддержать умножение вида 10 * a.

→ Ссылка