EAFP和错误捕获属性错误

时间:2015-11-24 14:52:22

标签: python

我是Python的新手和背后的概念。

前几天我跟着EAFP而没有听说过:

try:
    self._parent.OptionalFunction(arg1, arg2, arg3)
except AttributeError:
    # self._parent does not have OptionalFunction, no problem
    pass

发生了什么事情,在重构时,我将OptionalFunction从将3个单独的对象更改为对象列表和其他内容。我忘了更改上面一个调用OptionalFunction的块,所以我传递了三个参数,我OptionalFunction中的代码试图计算它们并失败,引发并归因于错误。 由于上面的代码块,错误从未出现过错误,我搜索的方式很长。

所以我将所有代码更改为代码块,如:

if hasattr(self._parent, "OptionalFunction"):
    self._parent.OptionalFunction(listOfArgs, otherArgs)

今天我了解了EAFPLBYL,所以我想知道在使用EAFP方面如何防止我的问题“pythonic”?

我想到的一个解决方案是捕获OptionalFunction内的AttributeErrors并引发自定义错误,但这会炸毁我的函数,我将不得不在我写的每个函数中考虑这个案例:“我会不会将来与EAFP一起使用?“

那么有一种巧妙的方法可以解决这个问题吗?

0 个答案:

没有答案