<分区>
我有一个简单的类,可以帮助对向量(即数字列表)进行数学运算。我的 Vector
可以乘以 Vector
的其他实例 或 标量(float
或 int
).
在其他更强类型的语言中,我会创建一个方法来将两个 vector
相乘,并创建一个单独的方法来将 vector
与 int< 相乘
/ float
。我对 Python 还是很陌生,不确定我将如何实现它。我能想到的唯一方法是覆盖 __mul__()
并测试传入参数:
class Vector(object):
...
def __mul__(self, rhs):
if isinstance(rhs, Vector):
...
if isinstance(rhs, int) or isinstance(rhs, float):
...
即使我那样做,我也会被迫将 Vector
乘以这样的标量:
v = Vector([1,2,3])
result = v * 7
如果我想颠倒乘法中操作数的顺序怎么办?
result = 7 * v
在 Python 中执行此操作的正确方法是什么?