2
我想定義類來表示一個矩陣有沒有辦法爲一個類的實例定義[]運算符?
class matrix:
def __init__(self, mat):
self.mat = mat
self.dim = len(mat)
@classmethod
def withDim(matrix, dimension):
mat = [ [0]*dimension for i in range(dimension)]
return matrix(mat)
其中mat
是列表的列表,所以要代表矩陣
A = | a b |
| c d |
我可以寫出如下
A = matrix([ [a, b], [c, d] ])
我也開始定義一些運營商,如
def __add__(self, other):
n = self.dim
result = self.withDim(n)
for i in range(n):
for j in range(n):
result.mat[i][j] = self.mat[i][j] + other.mat[i][j]
return result
現在,如果我想在矩陣A
我要做
A.mat[i][j]
訪問元素i, j
的問題是:我可以爲了做
A[i][j]
就像我定義操作[ ]
定義__add__
?
在'__add__'裏它應該是'self.withDim'而不是'matrix.withDim'。 – agf
[]運營商爲一類?你最好稱它爲一個實例的operator,因爲還有一種方法可以做matrix [i] [j],其中matrix是類本身,而不是matrix類的一個實例。 – warvariuc
@agf謝謝! –