在Python中重写类的[]操作符(下标符号)的方法的名称是什么?
你需要使用__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__'
你正在寻找__getitem__方法。参见http://docs.python.org/reference/datamodel.html,第3.4.6节
要完全重载它,你还需要实现__setitem__和__delitem__方法。
edit
我差点忘了……如果你想完全模拟一个列表,你还需要__getslice__, __setslice__和__delslice__。
它们都记录在http://docs.python.org/reference/datamodel.html中
推荐文章
- ==和!=相互依赖吗?
- PyLint消息:logging-format-interpolation
- 我如何从一个URL读取图像数据?
- 存储Python字典
- 如何创建新文件夹?
- python中链式调用父初始化器
- 熊猫只创建列名的空数据框架
- 如何在Python中实现Softmax函数
- Conda是否取代了对virtualenv的需求?
- 我如何将熊猫系列或索引转换为NumPy数组?
- Tight_layout()不会考虑图形suptitle
- “else if”的正确语法是什么?
- 熊猫分组,然后按组排序
- 如何确定Pandas列是否包含特定值
- 当DEBUG = False时,Django给出Bad Request (400)