Я пишу несколько скриптов, которые будут использоваться не-python-пользователями.У меня есть класс Config, в котором есть словари, и я хотел бы иметь возможность вызывать пользовательское исключение для KeyError.Есть ли элегантный способ сделать это, кроме написания метода, который вызывает исключение при проверке значения в словаре?
Вот пример:
class ConfigError(Exception): pass
class Config:
def __init__(self):
self.cars = {'BMW': 'M5', 'Honda': 'Civic'}
def get_car(self, name):
try:
return self.cars[name]
except KeyError, e:
raise ConfigError("Car %s doesn't exist!!!" % name)
conf = Config()
print 'Car: %s' % conf.cars['BMW']
print 'Car: %s' % conf.cars['Mercedes']
Вот вывод:
Car: M5
Traceback (most recent call last):
File "test.py", line 17, in ?
print 'Car: %s ' % conf.cars['Mercedes']
KeyError: 'Mercedes'
Я знаю, что могу написать метод, подобный Config.get_car () выше, и вызвать пользовательскийисключение, но я хотел бы иметь возможность вызывать пользовательское исключение при прямой попытке доступа к словарю Config.cars.Я хотел бы сделать это, потому что на самом деле в конфиге больше словарей, но мне нужно только создать пользовательское исключение для одного из словарей, и я хотел бы сохранить постоянство доступа к данным (все как словари).
Примечание: это использует Python 2.4.4