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