我正在尝试使用大多数正常的数学运算来构建矩阵的类表示。我在标量乘法运算中遇到了麻烦。
代码的相关部分如下:
import numpy
class Matrix(object):
def __init__(self, array):
self.array = numpy.array(array, dtype=int)
def __mul__(self, other):
if type(other) == int:
return Matrix(other*self.array)
else:
raise ValueError("Can not multiply a matrix with {0}".format(type(other)))
标量乘法的标准方式是cA,其中c是标量,A是矩阵,因此Python中为c*A
。但是,如果TypeError: unsupported operand type(s) for *: 'int' and 'Matrix'
A*c
按预期运行,则会失败(请注意other*self.array
)。因此,我得出结论,*操作数是为int
和numpy.array
定义的。
这是什么魔法,我怎样才能复制这种行为?