2011-07-31 50 views
17

所以,我有一個具有__mul__功能與整數工作的自定義類。然而,在我的程序(庫),它越來越被稱爲周圍的其他方法,即2 * x其中x是我的班。有沒有一種方法可以使用我的__mul__功能?的Python:乘法覆蓋

回答

23

只需添加下面的類定義,你應該是好去:

__rmul__ = __mul__ 
+0

注意,這不會永遠是你想要的。假設你有矢量和矩陣類,並且你想通過將矢量視爲1xN矩陣來定義它們之間的乘法。矩陣乘法不可交換,所以您需要重新切換參數的順序。 –

16

實現__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__