当前位置:   article > 正文

python try里面嵌套try_python中嵌套的try/except块是一个好的编程实践吗?

python脚本里两层try好么

我正在编写自己的容器,它需要通过属性调用来访问内部的字典。容器的典型用途如下:dict_container = DictContainer()

dict_container['foo'] = bar

...

print dict_container.foo

我知道写这样的东西可能很愚蠢,但这是我需要提供的功能。我在考虑用以下方式实现这一点:def __getattribute__(self, item):

try:

return object.__getattribute__(item)

except AttributeError:

try:

return self.dict[item]

except KeyError:

print "The object doesn't have such attribute"

我不确定嵌套的try/except块是否是一个好的实践,因此另一种方法是使用hasattr()和has_key():def __getattribute__(self, item):

if hasattr(self, item):

return object.__getattribute__(item)

else:

if self.dict.has_key(item):

return self.dict[item]

else:

raise AttributeError("some customised error")

或者使用其中一个,然后尝试这样的catch block:def __getattribute__(self, item):

if hasattr(self, item):

return object.__getattribute__(item)

else:

try:

return self.dict[item]

except KeyError:

raise AttributeError("some customised error")

哪一种选择是最性感和优雅的?

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/631536?site
推荐阅读
相关标签
  

闽ICP备14008679号