在Python中使用两个参数进行下标访问

1 投票
1 回答
2872 浏览
提问于 2025-04-17 04:59

假设我有一个类X,它有两个属性:i和j。

我想要实现:

x = X((1,2,3),(2,3,4)) #this would set i to (1,2,3) and j to (2,3,4)

现在我希望下标操作能这样工作:

a, b = x[1,2] #a should now be 2 and b should now be 3

目前我正在尝试这个:

    def __getitem__(self, i, j):
        return self.x[i] , self.y[j]

但是每次我尝试打印x[1,2]的时候,都会出现一个错误,提示getitem需要3个参数,但我只给了2个。

1 个回答

7

逗号是元组打包的工具。当你写 x[1, 2] 的时候,其实是在调用 x.__getitem__((1, 2))

def __getitem__(self, ij):
   i, j = ij
   return self.x[i], self.y[j]

撰写回答