17
所以,我有一個具有__mul__
功能與整數工作的自定義類。然而,在我的程序(庫),它越來越被稱爲周圍的其他方法,即2 * x
其中x
是我的班。有沒有一種方法可以使用我的__mul__
功能?的Python:乘法覆蓋
所以,我有一個具有__mul__
功能與整數工作的自定義類。然而,在我的程序(庫),它越來越被稱爲周圍的其他方法,即2 * x
其中x
是我的班。有沒有一種方法可以使用我的__mul__
功能?的Python:乘法覆蓋
只需添加下面的類定義,你應該是好去:
__rmul__ = __mul__
實現__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__
注意,這不會永遠是你想要的。假設你有矢量和矩陣類,並且你想通過將矢量視爲1xN矩陣來定義它們之間的乘法。矩陣乘法不可交換,所以您需要重新切換參數的順序。 –