Python 中的 __del__() 方法有什么用?

2023-12-22

From Python 文档 https://docs.python.org/3/reference/datamodel.html?highlight=__del__#object.__del__:

不保证__del__()为解释器退出时仍然存在的对象调用方法。

据我了解,也没有办法保证对象在解释器退出之前停止存在,因为由垃圾收集器决定是否以及何时删除对象。

那么这个方法到底有什么意义呢?您可以在其中编写清理代码,但不能保证它会被执行。

我知道你可以使用以下方法解决这个问题try-finally or with条款,但我仍然想知道什么是有意义的用例__del__() method.


它可用于处置对象管理的资源:https://github.com/python/cpython/blob/master/Lib/zipfile.py#L1805 https://github.com/python/cpython/blob/master/Lib/zipfile.py#L1805

正如文档字符串中所述,这是最后的手段,因为只有在 gc 运行时才会关闭对象。

正如您在问题中所说,首选方式是致电close您自己,或者通过致电.close()直接或使用上下文管理器with Zipfile() as z:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的 __del__() 方法有什么用? 的相关文章

随机推荐

  • Netbeans 添加带有可视化编辑器的弹出菜单

    我需要添加一个popup menu to the JFrame 但是当我将该组件放在那里时 它就消失了 我可以在代码中看到它 但无法编辑任何内容 有没有办法我可以像这样编辑它menu bar I use Netbeans 7 2 1如果这很
  • 将 numpy 数组转换为矩阵 rpy2、Kmeans

    我有一个 numpy 2D 数组 self sub 我想在 rpy2 kmeans 中使用它 k robjects r kmeans self sub 2 20 我总是收到以下错误 valueError 目前无法对该类型执行任何操作 我能做
  • 交换 numpy 数组中的列?

    from numpy import def swap columns my array col1 col2 temp my array col1 my array col1 my array col2 my array col2 temp
  • xml文件中的DOCTYPE是什么意思?

    在 hibernate 中我们使用配置和映射 xml 文件 在 xml 中 第一行是版本 然后我们指定 DOCTYPE DTD 行 例子 有人可以解释一下这是什么意思吗 我知道 DTD 是文档类型定义 就像定义 xml 语法一样 我想知道这
  • 故事板崩溃 - 编码兼容的关键 sceneViewController

    我在 iOS 5 中使用 Storyboard 时遇到间歇性崩溃 时常 当我尝试使用 Storyboard 中的视图控制器实例化新对象时 我会收到 SIGABRT 这似乎是一个非常普遍的错误 但我找不到其他人看到过这个错误 感谢您的帮助 S
  • 为什么process.memoryUsage()不输出节点进程消耗的内存

    在node js应用程序中 我使用代码 console log process memoryUsage 记录内存使用情况 输出如下 rss 13664256 heapTotal 6131200 heapUsed 3396912 当我使用进程
  • 如何按月分组(包括所有月份)?

    我按月份对表格进行分组 SELECT TO CHAR created YYYY MM AS operation COUNT id FROM user info WHERE created IS NOT NULL GROUP BY ROLLU
  • TFS 2015 版本管理访问构建变量

    在 TFS 2015 中 我们有一个构建 它将自动触发新版本 这是通过新实现的基于脚本的构建定义 https www visualstudio com docs build overview 现在我想将用户变量从构建传递到发布 我在构建中创
  • 更改ggplot地图R Studio中图例中的文本

    我正在尝试创建一张充满流感疾病热度的美国地图 我有两个问题 我无法更改图例中的变量文本 图例的顺序是错误的 1 gt 10 gt 2 gt 这是代码 library maps library ggplot2 Get all states d
  • 嵌套对象和数组解构

    我正在尝试使用解构将对象转换为更精简的版本 我的对象包括一个嵌套数组 其中也包含对象 我只想要这个数组中的几个字段 我可以很好地进行嵌套对象解构 并且可以很好地进行数组解构 但不能一起进行 我当前的尝试如下所示 var data title
  • jsx 表忽略换行符

    我正在尝试创建一个包含多行字符串的表 但我的表未正确设置该字符串的格式 这是 jsx td arr join n td 这是相应的 html td Line 1 Line 2 Line 3 Line 4 td 但在浏览器中它看起来像 发生了
  • 删除 Swagger UI 上的架构 - 续

    我已经关注了置顶文章 Net Core 3 1 删除 Swagger UI 上的架构 https stackoverflow com questions 62858580 net core 3 1 remove schema on swag
  • 两个进程写入一个文件,防止混合输出

    我想从两个进程获取输出并将它们合并到一个文件中 例如 proc1 gt gt output proc2 gt gt output 问题是最终文件中的输出可能会混淆 例如 如果第一个进程写入 hellow 第二个进程写道 bye 结果可能是这
  • 将 jquery 代码应用于多个文本区域

    我有一些代码可以工作 但有很多重复 http jsfiddle net 6Wp2j 25 http jsfiddle net 6Wp2j 25 input apple on keyup function div apple html thi
  • 如何以编程方式清除 Microsoft Edge 浏览器缓存?

    有谁知道如何以编程方式清除 Microsoft Edge 的缓存 Net 脚本 命令行 删除文件 上面给出的位置我认为是错误的 下面是 cookie 历史记录和缓存的位置 目录 C Users 用户名 AppData Local Micro
  • asp.net mvc 页面不显示关联对象的属性

    我有以下简单的结构 申请人 位置 申请人职位 和申请人职位历史 第三类有一份申请人推荐信和一份职位推荐信 第 4 个表有一个与 ApplicantPosition 相关的参考 在 razon 页面中 我正在显示每个职位申请人的历史记录 例如
  • 从IP地址获取子网掩码和网关

    我该如何计算subnet mask and gateway从一个IP address 假设我的 IP 地址是180 12 24 68 那么如何计算这个IP的子网掩码和网关呢 您无法计算您的子网掩码or仅来自 IP 地址的网关 您可以在给定
  • 在网络服务器上管理多个.Net框架

    因此 我负责在生产服务器上部署我的项目 其中还设置了一些其他 ASP NET 网站 现在的问题是 我在 NET 3 5 下编写了整个项目 但在网络服务器上当前安装是 NET 1 1 因为其他一些项目需要它们 不要问我为什么 我也无法弄清楚
  • 将列表列表拆入 pandas 数据框[重复]

    这个问题在这里已经有答案了 假设我有以下数据框 x pd DataFrame a x y x t x r y t b 1 0 1 a b 0 x y 1 1 x t x r 0 2 y t 1 我想去 letter num 0 x 1 1
  • Python 中的 __del__() 方法有什么用?

    From Python 文档 https docs python org 3 reference datamodel html highlight del object del 不保证 del 为解释器退出时仍然存在的对象调用方法 据我了解