Python:使用类作为列表索引

时间:2016-04-23 01:59:32

标签: python class

如果我有一个具有值变量的类myclass(),有没有办法可以在不获取变量的情况下将其用作索引,如:

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

index = myclass(0)

data[index] = 10

1 个答案:

答案 0 :(得分: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解释了差异。