当涉及到两个矩阵相乘时,我遇到了一些麻烦。当我尝试执行添加部分时出现 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实例答案 0 :(得分:1)
根据AttributeError
,您从未在班级中定义__getitem__
方法。 This是如何控制对象[key]访问权限的。如果你决定在python中创建一个更高级的类(比如这个),我建议你阅读python data model。虽然将两个其他矩阵的乘法存储在self中有点奇怪。我可能只是在方法中创建一个新矩阵并返回它。