Python 有与 __init__() 等价的 shutdown 吗?

3 投票
1 回答
2060 浏览
提问于 2025-04-17 19:44

我在Python类中经常使用__init__()函数,这个函数在类第一次被调用时用来设置一些东西。

那么,有没有类似的函数可以在脚本关闭时被调用呢?

1 个回答

6

在Python中,有一个叫做 __del__ 的方法,它会在一个对象被清理时被调用。不过,Python并不能保证在解释器退出时一定会调用这个 __del__ 方法。

不过,还有一些其他的选择:

  • atexit.register -- 你可以在这里注册一个函数,让它在你的脚本结束时运行。
  • 创建一个 上下文管理器,然后使用 with 语句。这样,当你离开这个上下文时,你的上下文管理器的 __exit__ 方法会被无条件地调用。

不过,如果你做了一些很极端的事情来退出程序(比如导致段错误,或者通过 os._exit 直接退出),这两种方法都可能会失效。

撰写回答