我对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)
今天我学习了EAFP和LBYL,所以我想知道如何在使用EAFP时防止我的问题?你知道吗
我想到的一个解决方案是捕获OptionalFunction
中的AttributeErrors并引发一个自定义错误,但这会破坏我的函数,我必须在我编写的每个函数中考虑这种情况:“将来我会将它与EAFP一起使用吗?”你知道吗
那么有没有一种巧妙的方法来处理这个问题呢?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐