Подтвердить что ты не робот

Python: переопределение умножения

Итак, у меня есть пользовательский класс, который имеет функцию __mul__, которая работает с ints. Тем не менее, в моей программе (в библиотеках) это называется другим способом, т.е. 2 * x, где x принадлежит моему классу. Есть ли способ, которым я могу использовать эту функцию __mul__ для этого?

4b9b3361

Ответ 1

Просто добавьте следующее в определение класса, и вам должно быть хорошо:

__rmul__ = __mul__

Ответ 2

Внедрите __rmul__.

class Foo(object):
    def __mul__(self, other):
        print '__mul__'
        return other
    def __rmul__(self, other):
        print '__rmul__'
        return other

x = Foo()
2 * x # __rmul__
x * 2 # __mul__