2011-06-26 90 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)