Я пытаюсь сделать что-то относительно простое - взять класс OrderedDict и дать ему возможность искать значения на основе целых чисел или срезов.Поэтому, если у меня есть следующее
from collections import OrderedDict
test_dict = OrderedDict()
test_dict['a'] = 'value a'
test_dict['b'] = 'value b'
test_dict['c'] = 'value c'
test_dict[:2]
В идеале это даст результат
['value a','value b']
. Для этого я пытаюсь создать подкласс OrderedDict, а затем переопределить его .getitem метод.У меня есть следующее:
class indexed_dict(OrderedDict):
def __init__(self):
pass
def __getitem__(self, key):
try:
return list(self)[key]
except TypeError: # Because we've entered a number instead of a key
return self[key]
Проблема с этим заключается в том, что если вы попытаетесь использовать его нормально - скажем, test_indexed_dict['a']
- интерпретатор начнет повторяться, предположительно, потому что в предложении исключения его просятзапустите getitem снова.Есть ли лучший способ обработки ошибок, который не создает эту проблему?
Заранее спасибо за любую помощь.