我想创建一个新类,它充当对象的特殊容器类型,并且可以使用方括号访问.
例如,假设我有一个名为的类ListWrapper.假设obj是一个ListWrapper.当我说obj[0],我希望obj.access()用0作为参数调用该方法.然后,我可以回报我想要的任何东西.这可能吗?
Aco*_*orn 69
您想要定义特殊的__getitem__[docs]方法.
class Test(object):
def __getitem__(self, arg):
return str(arg)*3
test = Test()
print test[0]
print test['kitten']
Run Code Online (Sandbox Code Playgroud)
结果:
000 kittenkittenkitten
Python的标准对象有一系列命名的方法__something__,这些方法主要用于创建挂接到语言API中的对象.例如__getitem__并且__setitem__是被称为用于获取或设置值的方法[]符号.这里有一个如何创建看起来像Python字典的子类的东西的例子:https://github.com/wavetossed/mcdict
请注意,它实际上并不是子类的字典,它也有一个update方法.如果您希望您的类正确伪装成Python字典,则这两个都是必需的.