class Matrix:
def __init__(self,row,column):
self._matrix = [[0 for self._row in range(row)] for self._column in range(column)]
def __len__(self):
self._r = len(self._matrix)
self._c = len(self._matrix[0])
return r , c
def __add__(self, matrix):
if ((len(self._matrix) != len(matrix)) or (len(self._matrix[0]) != len(matrix[0]))):
print('Dimentions don\'t agree')
for i in range(self._row):
for j in range(self._column):
self._matrix[i][j] = self._matrix[i][j] + matrix[i][j]
def __getitem__(self, i, j):
return self._matrix[i][j]
def __setitem__(self, i, j, val):
self._matrix[i][j] = val
def __str__(self):
for row in self._matrix:
self._string += (''.join([str(elem) for elem in row]))
return self._string
if __name__ == '__main__':
m1 = Matrix(2,3)
m2 = Matrix(2,3)
for i in range(2):
for j in range(3):
m1[i,j] = 1
for i in range(2):
for j in range(3):
m2[i,j] = 2
m1 = m1 + m2
我是python的新手,读一本书来理解这些概念。我经历了多态,并尝试实现一个类,该类使用名为matrices的概念,它可以创建,设置项,添加并对矩阵对象执行一些操作。我没有被困住,因为我需要我的setitem功能有3个参数去除自我,但在我关注的书和互联网上的其他地方,每个人都使用2个参数除了自己的setitem。我该怎么做才能解决这个问题? This is the error
答案 0 :(得分:0)
__setitem__
只需3个参数:self
,index
和value
。
为了使您的代码更清晰,您需要执行以下操作:
def __getitem__(self, index):
i, j = index
return._matrix[i][j]
def __setitem__(self, index, value):
i, j = index
self._matrix[i][j] = value
这是使用当前语法执行您尝试编程的方式,例如m1[i, j]
。
您可以找到更加明确的答案right there。
虽然在您的代码中会有更多问题与您的问题不相关(索引超出范围),但我会让您单独解决这个问题。 :)