EAFP与属性错误的错误捕获

2024-10-01 22:32:32 发布

您现在位置: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时防止我的问题?你知道吗

我想到的一个解决方案是捕获OptionalFunction中的AttributeErrors并引发一个自定义错误,但这会破坏我的函数,我必须在我编写的每个函数中考虑这种情况:“将来我会将它与EAFP一起使用吗?”你知道吗

那么有没有一种巧妙的方法来处理这个问题呢?你知道吗


Tags: 对象函数代码self概念错误arg3parent

热门问题