我尝试使用warnings.simplefilter
来显示我的警告一次。我已经为DeprecationWarning
创建了一个子类。我尝试将simplefilter
放在与我的警告相同的模块中,并且在包级别init中尽可能地将其放在顶部,但它始终会在每次调用时显示警告。在python 3.4中测试。
我的警告:
class MyDeprecationWarning(DeprecationWarning):
pass
我如何调用simplefilter:
warnings.simplefilter('once', MyDeprecationWarning)
我如何打电话警告:
warnings.warn("Warning!", MyDeprecationWarning)
问题是什么?
答案 0 :(得分:1)
如果您的程序多次运行或某些代码在单独的进程中运行,您可能没有按正确的顺序发出命令。以下程序按预期工作。
import warnings
class MyDeprecationWarning(DeprecationWarning):
pass
def main():
print('Program Starting')
warnings.simplefilter('once', MyDeprecationWarning)
for _ in range(100):
warnings.warn('Warning!', MyDeprecationWarning)
print('Program Finished')
if __name__ == '__main__':
main()