gpt4 book ai didi

python - 有没有办法为类的实例定义 [ ] 运算符?

转载 作者:行者123 更新时间:2023-11-28 20:52:01 25 4
gpt4 key购买 nike

我想定义类来表示一个矩阵

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 中的元素 i, j 我必须这样做

A.mat[i][j]

问题是:我可以定义操作符 [ ] 来做

A[i][j]

就像我定义的__add__一样?

最佳答案

operator[] 调用 __getitem__:

class A:
def __getitem__(self, index):
return index+1

a = A()
print(a[1]) # prints 2

您可以通过返回代表该行的代理对象来实现 [][],该代理对象还响应 __getitem__。或者,您可以接受元组作为索引并使用 A[i,j] 语法。

关于python - 有没有办法为类的实例定义 [ ] 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7858516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com