0

在将两个矩阵相乘时,我遇到了一些麻烦。尝试执行添加部分时出现AttributeError

Traceback (most recent call last):
  File "MatrixClass.py", line 189, in <module>
    main()
  File "MatrixClass.py", line 184, in main
    mat.multiplyMatrixes(mat1,mat2)
  File "MatrixClass.py", line 176, in multiplyMatrixes
    self[i][j] += (m1[i][k])*(m2[k][j]) 
AttributeError: matrix instance has no attribute '__getitem__' 

我尝试将新矩阵保存在另一个名为 m3 的实例中,但我认为使用self会更好。

这是我的代码:

def multiplyMatrices(self,m1,m2):
    if m1.getRows() == m2.getColumns() and m1.getColumns() == m2.getRows():
        self.setRows()
        self.setColumns()
        for i in range(m1.getRows()):
            for j in range(m2.getColumns()):
                for k in range(m1.getColumns()):
                    self[i][j] += (m1[i][k])*(m2[k][j])

在调用multiplyMatrices()之前,我在main()中创建了 self 的实例

4

1 回答 1

1

根据AttributeError,您从未__getitem__在类中定义该方法。就是您可以控制 object[key] 访问的方式。如果您决定在 python 中创建一个更高级的类(比如这个类),我建议您阅读一般的 python数据模型。尽管将另外两个矩阵的乘法存储在 self. 我可能只是在方法中创建一个新矩阵并返回它。

于 2013-08-19T21:02:04.120 回答