2016-04-23 25 views
2

如果我有一個類myclass()具有值的變量,是有辦法,我可以使用它作爲一個指標沒有得到變量,如:的Python:使用類作爲一個列表索引

data = [1,2,3,4,5] 

index = myclass(0) 

data[index] = 10 
+0

爲什麼?不,列表中的索引必須是正整數,而不是類對象。 – Signal

+0

@Signal我同意「爲什麼」,但你可能想看看下面的答案 –

+0

@ cricket_007謝謝你指出。 – Signal

回答

4

是的,有這樣一種方式,和邏輯的是,它的命名__index__

>>> class foo(object): 
...  def __init__(self, a): 
...    self.a = a 
...  def __index__(self): 
...    return self.a 
... 
>>> data = [1, 2, 3, 4, 5] 
>>> data[foo(1)] 
2 

有關用法和理由,見PEP0357,介紹__index__。請注意0​​也存在; PEP0357解釋了這種差異。

+0

謝謝,那很理想! – marienbad