我的Python脚本有一个自定义日志记录类,其flush()
方法print()
是列表的内容。
我希望在特殊flush()
方法中包含__del__()
,以防程序结束而不刷新日志。但是,the documentation中的说明指出:
[...]当 del ()被调用以响应被删除的模块时(例如,当完成程序的执行时), del <引用的其他全局变量/ strong>()方法可能已被删除或正在拆除(例如导入机器关闭)。
有人会推荐一种不同的方法,如果是这样,为什么?
答案 0 :(得分:1)
您可能希望将此记录器设为context manager。在异常终止的情况下,仍然不会刷新,但很少有事情会发生。但即使在正常终止时,也可能不会在对象上调用__del__
。
使用with
语句时,记录器可能是不合适的事情之一,因为它们非常全局,因此不确定上下文管理器是否合适。