Dav*_*ebb 252
您需要使用该__getitem__方法.
class MyClass:
def __getitem__(self, key):
return key * 2
myobj = MyClass()
myobj[3] #Output: 6
Run Code Online (Sandbox Code Playgroud)
如果您要设置值,您也需要实现该__setitem__方法,否则会发生这种情况:
>>> myobj[5] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: MyClass instance has no attribute '__setitem__'
Run Code Online (Sandbox Code Playgroud)
Dav*_*rby 56
要完全超载它,您还需要实现__setitem__和__delitem__方法.
编辑
我差点忘了......如果你想完全模仿一个列表,你也需要__getslice__, __setslice__ and __delslice__.
所有文档都记录在http://docs.python.org/reference/datamodel.html中
| 归档时间: |
|
| 查看次数: |
92721 次 |
| 最近记录: |