2016-04-23 3 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__. Обратите внимание, что также существует __int__; PEP0357 объясняет разницу.

+0

Спасибо, это идеально! – marienbad

Смежные вопросы