Я заинтересован в использовании объекта списка 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
Любые идеи? Также, если бы вы могли указать мне на хороший учебник, это было бы здорово!
Спасибо!