如何覆盖运算符?
在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节