在Python中重写类的[]操作符(下标符号)的方法的名称是什么?
[]
你需要使用__getitem__方法。
__getitem__
class MyClass: def __getitem__(self, key): return key * 2 myobj = MyClass() myobj[3] #Output: 6
如果你要设置值,你也需要实现__setitem__方法,否则会发生这样的情况:
__setitem__
>>> myobj[5] = 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: MyClass instance has no attribute '__setitem__'
你正在寻找__getitem__方法。参见http://docs.python.org/reference/datamodel.html,第3.4.6节
要完全重载它,你还需要实现__abc0和__delitem__方法。
__delitem__
编辑
我差点忘了……如果你想完全模拟一个列表,你还需要__getslice__, __setslice__ and __delslice__。
__getslice__, __setslice__ and __delslice__
它们都记录在http://docs.python.org/reference/datamodel.html中