【发布时间】:2017-12-18 17:20:33
【问题描述】:
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 的新手,正在阅读一本书来理解这些概念。我经历了多态性并试图实现一个使用名为矩阵的概念的类,它可以创建、设置项目、添加和对矩阵对象执行一些操作。我没有被困住,因为我需要我的 setitem 函数来删除 self 的 3 个参数,但是在我正在关注的书中以及互联网上的其他任何地方,除了 self 之外,每个人都使用了 2 个参数作为 setitem。我能做些什么来解决这个问题? This is the error
【问题讨论】:
-
可能重复:stackoverflow.com/questions/15774804/…。我建议您阅读有关
__setitem__的文档 -
我已经阅读了这个答案,但这并不能回答我的问题。
标签: python python-3.x oop operator-overloading