如何在Python中继承和扩展列表对象?

9 浏览
0 Comments

如何在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错误。

有任何想法吗?如果你能给我指点一个好的教程,那就太好了!

谢谢!

0