正在编写供非python用户使用的脚本。 有包含词典的Config类。 我想让KeyError发生自定义异常。 除了在检查词典值时引发异常之外,还有其他优雅的方法吗?
这是一个例子:
类配置器(Exception ) : pass
class Config:
def __init__(self ) :
self.cars={'BMW': 'M5 ',' Honda': 'Civic'}
defget_car(self,name ) :
try:
return self.cars[name]
Except密钥错误,e:
raiseconfigerror (' car % s doesn ' t exist! “% name”
conf=Config ()
print ' car : % s ' % conf.cars [ ' BMW ' ]
print ' car : % s ' % conf.cars [ ' Mercedes ' ]
这是输出:
Car: M5
跟踪后退(mostrecentcalllast ) :
File 'test.py ',line 17,in?
print ' car : % s ' % conf.cars [ ' Mercedes ' ]
KeyError: 'Mercedes '
我知道上面的Config.get_car ) )这样的方法,可以引起自定义异常,但我希望在尝试直接访问Config.cars词典时可以引起自定义异常这是因为配置中实际上有更多的词典,但只在一个词典中引起自定义异常,希望保持数据访问的一致性。
注意:这是使用Python 2.4.4
解决方法:
考虑这样做。
类配置(dict ) :
def __getitem__(self,key ) :
try:
返回用户(myconfig dict,self )._ _ getitem _ _ (key ) ) ) ) ) ) 65
Except密钥错误as e :
raisemyconfigerror(e.message )。
这样的事情可能会让你在自己的扩展异常中包装每个访问。
标签: python、dictionary、exception-handling、python-2-4
资料来源: https://codeday.me/bug/2019 06 21/1252798.html