最佳答案
我对使用 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
有什么想法吗? 如果你能为我指出一个很好的教程,这将是伟大的!
谢谢!