在Python中重写类的[]操作符(下标符号)的方法的名称是什么?


当前回答

你正在寻找__getitem__方法。参见http://docs.python.org/reference/datamodel.html,第3.4.6节

其他回答

你正在寻找__getitem__方法。参见http://docs.python.org/reference/datamodel.html,第3.4.6节

你需要使用__getitem__方法。

class MyClass:
    def __getitem__(self, key):
        return key * 2

myobj = MyClass()
myobj[3] #Output: 6

如果你要设置值,你也需要实现__setitem__方法,否则会发生这样的情况:

>>> myobj[5] = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute '__setitem__'

要完全重载它,你还需要实现__setitem__和__delitem__方法。

edit

我差点忘了……如果你想完全模拟一个列表,你还需要__getslice__, __setslice__和__delslice__。

它们都记录在http://docs.python.org/reference/datamodel.html中