我想定义类来表示矩阵
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
现在,如果我想访问矩阵i, j
中的元素A
,我必须这样做
A.mat[i][j]
问题是:我可以定义运算符[ ]
以便
A[i][j]
就像我定义__add__
?
答案 0 :(得分:7)
operator []调用__getitem__
:
class A:
def __getitem__(self, index):
return index+1
a = A()
print(a[1]) # prints 2
您可以通过返回代表该行的代理对象来实现[] [],并响应__getitem__
。或者,您可以接受元组作为索引并使用A[i,j]
语法。