Программа Операции над матрицами,не могу понять как она работает
class Matrix(object): '''Matrix real numbers''' def __init__(self,h,w): self._nrows=h self._ncols=w self._data=[0]*(self._nrows*self._ncols) def __str__(self): return "Matrix:"+str(self._nrows)+"by"+str(self._ncols) def setnrows(self,w): self._nrows=w self.reinit() def getnrows(self): return self._nrows def getncols(self): return self._ncols def reinit(self): self._data=[0]*(self._nrows*self._ncols) def setncols(self,h): self._ncols=h self.reinit() def setValue(self,i,j,value): if i<self._nrows and j<self._ncols: self._data[i*self._nrows+j]=value else: raise Exception ("Ошибка") def multiply(self,otherMatrix): result=Matrix(self._nrows,otherMatrix.getncols()) return result def inv (self): if self._ncols !=self._nrows: raise Exception("Данная матрица не квадратная") invertedMatrix=Matrix(self._ncols,self._nrows) invertedMatrix.setncols(self._ncols) invertedMatrix.setnrows(self._nrows) return invertedMatrix class SparseMatrix(Matrix): def __str__ (self): return "SparseMatrix:"+str (self._nrows)+"by" +str (self._ncols) def reinit(self): self._data={} def setValue(self,i,j,value): self._data[(i,j)]=value def multiply(self,otherMatrix): result=SparseMatrix(self._nrows,otherMatrix.getncols()) return result def inv(self): if self._ncols !=self._nrows: raise Exception("Данная матрица не квадратная") invertedMatrix=SparseMatrix(self._ncols,self._nrows)