我有一个Python脚本的自定义日志类,其中flush()
方法print()
是列表的内容。
我想在特殊的__del__()
方法中包含flush()
,以防程序在没有刷新日志的情况下结束。然而,文档中的注释指出:
[…当del()被调用以响应一个模块被删除时(例如,当程序执行完成时),del()方法引用的其他全局变量可能已经被删除或正在被删除(例如,导入机器关闭)。
有没有人推荐一种不同的方法来做这件事,如果有,为什么?
您可能想把这个日志记录器变成一个上下文管理器。在异常终止的情况下,这仍然不会冲洗,但很少有东西会冲洗。但是__del__
可能不会在对象上被调用,即使在正常的终止中。
日志记录器可能是使用with
语句时不太适合的东西之一,因为它们是非常全局的,所以不确定上下文管理器是否适合。