如何覆盖运算符?

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

您需要使用__getitem__方法 。

 >>> class MyClass: ... def __getitem__(self, key): ... return key * 2 ... >>> myobj = MyClass() >>> myobj[3] 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__方法。

编辑

我几乎忘了…如果你想完全模仿一个列表,你还需要__getslice__, __setslice__ and __delslice__

这些都logging在http://docs.python.org/reference/datamodel.html中;

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