我有一个带有内部数据库连接的对象,该对象在其整个生命周期内都处于活动状态。在程序运行结束时,必须提交并关闭连接。到目前为止,我使用了显式close
方法,但这有点麻烦,尤其是在调用代码中可能发生异常时。
我正在考虑使用__del__
关闭的方法,但是在网上阅读了一些之后,我有一些担忧。这是一个有效的使用模式吗?我可以确定内部资源将被__del__
正确释放吗?
这次讨论提出了类似的问题,但没有找到令人满意的答案。我不想有一个显式的close
方法,并且 usingwith
不是一个选项,因为我的对象没有像 open-play-close 那样简单地使用,而是作为另一个使用它的更大对象的成员保存在 GUI 中运行时。
C++ 有完美的析构函数,可以安全地释放资源,所以我想 Python 也有一些共识。出于某种原因,情况似乎并非如此,社区中的许多人发誓反对__del__
. 那有什么办法呢?