Порядок объектов при перегрузке арифметических операторов
допустим, мне для чего-то нужно сделать свой класс, в котором я неким образом (не влияя на логику арифметических операций) добавляю что-нибудь.
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
.