2011-06-26 28 views
18

列表类似的索引访问,我想能够访问使用数组的语法Python对象的一些值,即:在Python中实现

obj = MyClass() 
zeroth = obj[0] 
first = obj[1] 

这可能吗?如果是这样,你如何在Python类中实现这个问题?

+2

显然,对于那些使用Google,这被称为'索引'。 – PeterJCLaw

+0

除非Python中的列表是这种方式(不知道 - 我很少使用它),也许你应该把索引而不是列表中的标题? –

+1

@Merlyn,名单确实如此,等等。无论如何。 – PeterJCLaw

回答

30

您需要编写或覆盖__getitem__,__setitem____delitem__

因此,例如:

class MetaContainer(): 
    def __delitem__(self, key): 
     self.__delattr__(key) 
    def __getitem__(self, key): 
     return self.__getattribute__(key) 
    def __setitem__(self, key, value): 
     self.__setattr__(key, value) 

这是一个非常简单的类,允许其属性索引访问。

2

使用__getitem____setitem__方法。

class MyClass: 
    def __getitem__(self, key): 
     return some_value_related_to_key 

    def __setitem__(self, key, value): 
     # set value (if needed)