创建一个可以使用方括号访问的python对象

时间:2011-10-30 00:59:36

标签: python

我想创建一个新类,它充当对象的特殊容器类型,可以使用方括号访问。

例如,假设我有一个名为ListWrapper的类。假设objListWrapper。当我说obj[0]时,我希望以0作为参数调用方法obj.access()。然后,我可以回报我想要的任何东西。这可能吗?

2 个答案:

答案 0 :(得分:63)

您想要定义特殊的__getitem__[docs]方法。

class Test(object):     
    def __getitem__(self, arg):
        return str(arg)*3

test = Test()

print test[0]
print test['kitten']

<强>结果:

000
kittenkittenkitten

答案 1 :(得分:7)

Python的标准对象有一系列名为__something__的方法,它们主要用于创建挂接到语言API中的对象。例如,__getitem____setitem__是使用[]表示法获取或设置值的方法。这里有一个如何创建类似于Python字典的子类的示例:https://github.com/wavetossed/mcdict

请注意,它实际上并不是字典的子类,而且它还有一个update方法。如果您希望您的类正确伪装成Python字典,则这两个都是必需的。