2017-12-18 30 views
-1
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에서 초보자이며 개념을 이해하기위한 책을 읽었다. 나는 다형성을 거쳐 행렬 객체에 대해 생성, 설정, 추가 및 수행 할 수있는 행렬이라는 개념을 사용하는 클래스를 암시하려고했습니다. 나는 자기 자신을 제거하는 3 가지 논점을 갖기 위해 나의 정해진 기분을 필요로하므로 붙어 있지는 않다. 그러나 내가 따라 가고있는 책과 인터넷의 모든 곳마다 모든 것이 정령을위한 2 가지 주장을 사용했다. 이 문제를 해결하기 위해 무엇을 할 수 있습니까? self, indexvalue : This is the error__setitem__은 자기를 포함하여 4 개의 인수를 취할 수 있습니까? Whereever 나는 자기를 포함하여 3 개의 인자만을 취할 수 있다고 보았다.

+0

가능한 복제본 : https://stackoverflow.com/questions/15774804/setitem-implementation-in-python-for-pointx-y-class. '__setitem__'에 관한 문서를 읽어 주실 것을 당부드립니다. – IMCoins

+0

나는이 답변을 이미 읽었으며 내 질문에 답하지 않습니다. –

답변

0

__setitem__ 만 3 인수를 사용합니다.

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을 참조하십시오.

이 (가) 범위를 벗어난과 관련하여 더 많은 문제가있을지라도이 문제를 해결하도록하겠습니다. :)