2011-10-25 30 views
0

假設我有一個具有2個屬性的類X:i和j。使用python中的2個參數進行下標

我想有:

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 argume但是給出了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 =&internet;'。不過,嚴肅地說,我想像元組在任何Python教程中都有解釋。 –

+0

叫我一個noob,但我嘗試在多個參數中搜索__getitem__,使用多個參數進行下標,然後查看getitem方法的解釋,但沒有任何運氣。 對於剛接觸python的人來說,逗號是元組打包操作符的事實並不明顯,所以在這種情況下諷刺並不是很好。 –

相關問題