【发布时间】:2016-11-11 19:03:30
【问题描述】:
情况:我的库中有一些自定义异常类,供用户在其代码中使用。出于某种原因,我想重命名其中一个例外并弃用旧的。
将旧异常保留为别名并不难:
class MyNewError(ValueError):
pass
MyOldError = MyNewError
但最终我想删除我的库的旧错误名称,因此我希望在下游代码中使用此自定义异常的用户收到 DeprecationWarning 通知,该错误将被删除。
但我想在以下用例中提出 DeprecationWarning(假设我的包含自定义异常的库称为 mypackage):
# downstream user code
import mypackage
...
try:
....
except mypackage.MyOldError:
....
所以我想在用户尝试捕获错误时发出警告,而不仅仅是在用户提出错误时发出警告。
有可能以某种方式做到这一点吗? (因为用户没有在这里调用我可以提出弃用警告的函数)
【问题讨论】:
-
我不认为你可以 - 你大概不想每次有人导入
mypackage时都发出警告,而且我认为没有一种明智的方法可以覆盖__getitem__at模块级别(参见例如stackoverflow.com/q/10438894/3001761 - 这很尴尬)。