如何在Python中继承和扩展列表对象?
- 论坛
- 如何在Python中继承和扩展列表对象?
9 浏览
如何在Python中继承和扩展列表对象?
我对使用Python的列表对象很感兴趣,但想要稍微改变其功能。特别是,我希望列表从1开始索引而不是从0开始。例如:
>> mylist = MyList() >> mylist.extend([1,2,3,4,5]) >> print mylist[1]
输出应该是:1
但是当我修改__getitem__()
和__setitem__()
方法时,出现了RuntimeError: maximum recursion depth exceeded
错误。我尝试了很多方式来修改这些方法,但基本上都是这样的:
class MyList(list): def __getitem__(self, key): return self[key-1] def __setitem__(self, key, item): self[key-1] = item
我猜问题在于self[key-1]
正在调用定义它的同一个方法。如果是这样,我该如何让它使用list()
方法而不是MyList()
方法呢?我尝试使用super[key-1]
代替self[key-1]
,但结果是出现了TypeError: 'type' object is unsubscriptable
错误。
有任何想法吗?如果你能给我指点一个好的教程,那就太好了!
谢谢!