gpt4 book ai didi

python - 如何以可靠的方式使用 __del__?

转载 作者:太空狗 更新时间:2023-10-29 22:11:44 25 4
gpt4 key购买 nike

我了解到 python does not guarantee每当删除一个对象时调用 __del__。换句话说,del x不一定调用它的析构函数x.__del__()

如果我想确保正确的对象清理,我应该使用 context manager (在 with 语句中)。

我知道这很愚蠢,但出于几个原因(请不要问为什么)我被绑定(bind)到一个使用 Python 2.4 的系统;因此上下文管理器是毫无疑问的(它们是在 Python 2.5 中引入的)

所以我需要一个替代解决方案,因此我的问题是:是否有最佳实践可以帮助我可靠地使用 __del__?我的想法是 “如果 python 提供了这样的功能,则必须有一种方法可以有效地使用它(我只是愚蠢地弄清楚如何使用)”,,,

或者我只是太天真了,应该忘记 __del__ 并转向完全不同的方法?

最佳答案

简而言之:不,没有办法确保它被调用。

答案是自己实现上下文管理器。 with 语句大致翻译为:

x.__enter__()
try:
...
finally:
x.__exit__()

所以只能手动操作。它比那复杂一点,所以我建议阅读 PEP 343以充分了解上下文管理器的工作原理。

一个选择是调用你的清理函数close(),然后在未来的python版本中,人们可以很容易地使用contextlib.closing。将其变成真正的上下文管理器。

关于python - 如何以可靠的方式使用 __del__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com