在python中使用2个参数进行下标

Arn*_*tta 1 python subscript-operator

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

我希望有 :

x = X((1,2,3),(2,3,4)) #this would set i to (1,2,3) and j to (2,3,4)
Run Code Online (Sandbox Code Playgroud)

我现在希望下标以下列方式工作:

a, b = x[1,2] #a should now be 2 and b should now be 3
Run Code Online (Sandbox Code Playgroud)

目前我正在尝试这个:

    def __getitem__(self, i, j):
        return self.x[i] , self.y[j]
Run Code Online (Sandbox Code Playgroud)

然而,这一直给我一个错误,getitem正好接受3个参数,但给出了2个(当我尝试打印x [1,2]时)

Cat*_*lus 6

逗号是元组包装运算符.x[1, 2]电话x.__getitem__((1, 2)).

def __getitem__(self, ij):
   i, j = ij
   return self.x[i], self.y[j]
Run Code Online (Sandbox Code Playgroud)