我正在Python对象的__del__()
析构函数中进行一些处理,如果程序通过异常退出,我不希望发生这种处理。有没有办法从__del__()
检查我是否处于正常退出或异常退出的中间?
或者有一些方法可以检查atexit
函数中的相同条件吗?
答案 0 :(得分:2)
请勿使用__del__
。 __del__
hook甚至不能保证被调用:
无法保证在解释器退出时仍然存在的对象调用
__del__()
方法。
相反,使用Context Manager管理缓存,并在exc_type
设置为None
时调用__exit__()
method时将缓存标记为可重复使用。