如果我有一个具有值变量的类myclass()
,有没有办法可以在不获取变量的情况下将其用作索引,如:
data = [1,2,3,4,5]
index = myclass(0)
data[index] = 10
答案 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解释了差异。