подписка с 2 аргументами в Python - PullRequest
0 голосов
/ 25 октября 2011

Предположим, у меня есть класс 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)

Теперь я хочу, чтобы подписка работала следующим образом:

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]

Однако это продолжает давать мне сообщение об ошибке, что getitem принимает ровно 3 аргумента, но дается 2 (например, когда я пытаюсь распечатать x [1,2])

1 Ответ

5 голосов
/ 25 октября 2011

Запятая - оператор упаковки кортежей. x[1, 2] звонки x.__getitem__((1, 2)).

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