如何在Python中重载[]运算符?
在Python中,想要重写类的[]
操作符(也就是用方括号来访问元素),这个方法叫什么名字呢?
3 个回答
24
你在找 __getitem__
这个方法。可以查看这个链接:http://docs.python.org/reference/datamodel.html,在第3.4.6节里有详细介绍。
90
要让这个功能完全发挥作用,你还需要实现 __setitem__
和 __delitem__
这两个方法。
补充说明
我差点忘了……如果你想要完全模仿一个列表,还需要 __getslice__
、__setslice__
和 __delslice__
这几个方法。
这些内容都有详细的说明,可以在 http://docs.python.org/reference/datamodel.html 找到。
449
你需要使用 __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__'