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
__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。
虽然在你的代码中会有更多与你的问题无关的问题(索引超出范围),但我会让你单独解决这个问题。 :)