2011-10-25 3 views
0

2 개의 속성, i와 j를 가진 클래스 X가 있다고 가정하십시오.파이썬에서 2 개의 인자를 갖는 첨자

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

:이 노력하고있어

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

순간 : 지금 다음과 같은 방법으로 작업을 첨자 원하는

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

을 :

내가 갖고 싶어 그러나이 내게주는 오류를 계속 getitem 걸립니다 정확히 3 argume nts하지만 2가 주어집니다 (예를 들어 x [1,2]를 인쇄하려고 할 때)

답변

5

쉼표는 튜플 패킹 연산자입니다. x[1, 2]x.__getitem__((1, 2))입니다.

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

와우, 빠른 답변입니다.이 부분에 대해 자세히 설명해 주시겠습니까? –

+0

@ArnabDatta :'T * ptr = & 인터넷;'. 진심으로, 튜플은 파이썬 튜토리얼에서 설명된다고 생각합니다. –

+0

는 나를 멍청하다고하지만, 여러 매개 변수로 __getitem__을 검색하고, 여러 매개 변수로 하위 태그를 붙이며, 행운이없이 getitem 메서드에 대한 설명을 살펴 보았습니다. 쉼표가 튜플 패킹 연산자라는 사실은 파이썬에 익숙하지 않은 사람에게는 분명하지 않으므로이 경우에는 풍자가 정확히 수신되지 않습니다. –