Matrixの加算機能を実装しようとしています。 (つまり2つの行列を追加する) 2つの行列を追加できるように加算関数をオーバーロードすることでこれを行います。 このMatrixクラスでは、実装するGridクラスを継承しました。python +演算子オーバーロード問題
ここでは__add__
方法に問題があるようですが、それを分かりやすくすることができます。エラーはAttributeError: 'Matrix' Object has no attibute '_data'
と表示されます。
ここに私のコードです。誰でも助けてくれますか?または説明する?
おかげ
from Grid import Grid
class Matrix(Grid):
def __init__(self, m, n, value=None):
self.matrix = Grid(m, n)
self.row = m
self.col = n
def insert(self, row, col, value):
self.matrix[row][col] = value
print self.matrix
def __add__(self, other):
if self.row != other.row and self.column != other.column:
print " Matrixs are not indentical."
else:
for row in xrange(self.row):
for col in xrange(self.col):
self.matrix[row][col] = self.matrix[row][col] + other[row][col]
return self.matrix
は、ここで私は継承されたグリッドクラスです。
from CArray import Array
class Grid(object):
"""Represents a two-dimensional array."""
def __init__(self, rows, columns, fillValue = None):
self._data = Array(rows)
for row in xrange(rows):
self._data[row] = Array(columns, fillValue)
def getHeight(self):
"""Returns the number of rows."""
return len(self._data)
def getWidth(self):
"Returns the number of columns."""
return len(self._data[0])
def __getitem__(self, index):
"""Supports two-dimensional indexing
with [row][column]."""
return self._data[index]
def __str__(self):
"""Returns a string representation of the grid."""
result = ""
for row in xrange(self.getHeight()):
for col in xrange(self.getWidth()):
result += str(self._data[row][col]) + " "
result += "\n"
return result
を私はマトリックス__init__にコードを追加する必要がありますか?これはあなたが意味することですか? – user1047092
@ user1047092、はい。それは 'Grid .__ init__'を呼び出します。 –
。コードを追加してa = Matrix(2,3)を試した後。 Type Error:__init __()は最大4つの引数をとります。私は何が間違っているのか分かりません。 – user1047092