我将尝试构建一个矩阵的类表示,包括大部分常见的数学运算。但是,在标量乘法操作中遇到了问题。
代码的相关部分如下:
标准的标量乘法表达方式是cA,其中c是标量,A是矩阵,在Python中表示为 c*A 。 然而,这会导致
这是什么魔法,我该如何复制这种行为?
代码的相关部分如下:
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
已定义。这是什么魔法,我该如何复制这种行为?