Python:重载乘法
我有一个自定义的类,这个类里面有一个叫做 __mul__
的函数,它是用来处理整数的。不过在我的程序中(在一些库里),它被反过来调用了,也就是说是 2 * x
这种形式,其中 x
是我的类的一个实例。请问有没有办法让它在这种情况下也能使用我的 __mul__
函数呢?
2 个回答
37
也要实现 __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__
61
只需在类的定义中添加以下内容,你就可以开始使用了:
__rmul__ = __mul__