__del__ 在程序结束时

2024-03-30

假设有一个程序,在运行时其中有几个对象。

程序结束时是否调用每个对象的 __del__ 方法?

如果是的话,我可以做这样的事情:

class Client:
  __del__( self ):
    disconnect_from_server()

有许多潜在的困难 http://docs.python.org/reference/datamodel.html#object.__del__与使用相关__del__。 通常,没有必要,或者最好自己定义它。

相反,如果您希望对象在退出或异常时自行清理,请使用上下文管理器 http://docs.python.org/reference/datamodel.html#context-managers:

根据卡尔的评论:

class Client:
    def __exit__(self,ext_type,exc_value,traceback):
        self.disconnect_from_server()

with Client() as c:
    ...

原答案:

import contextlib

class Client:
    ...

@contextlib.contextmanager
def make_client():
    c=Client()
    yield c
    c.disconnect_from_server()

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

__del__ 在程序结束时 的相关文章

随机推荐

  • 在 C# 中使用条件运算符输入结果

    我正在尝试使用条件运算符 但我对它认为结果应该是什么类型感到困惑 下面是我设计的一个示例来展示我遇到的问题 class Program public static void OutputDateTime DateTime datetime
  • Handlebarsjs 检查字符串是否等于值

    Handlebars 是否可以在不注册助手的情况下检查字符串是否等于另一个值 我似乎无法在车把参考中找到与此相关的任何内容 例如 if sampleString This is a string do something if 看来你不能
  • 设置跨度元素的百分比宽度

    一个简单的问题 是否可以在CSS中设置span标签的百分比宽度 例如 span style width 50 span etc 在我的项目中 我目前正在使用 div 但当然在每个 div 标签之后都会插入换行符 我不想要 因此 最明显的解决
  • Dojo MVC 的布局实现

    我从头开始了一个道场项目 从一开始就尝试使用良好的实践 我对 dojo 工具包非常陌生 所以我正在浏览大量文档和示例 这些文档和示例给我留下了很多很酷的东西 但无法了解如何为未来的开发 或附加组件 实现架构 我在网上搜索并找到了这个dojo
  • 数据集和渲染器不应为空,并且在 AChartEngine 中应具有相同数量的系列

    我使用多 Y 轴图来绘制点 我有 1 X 轴 2 Y1 轴 3 Y2 轴 a 最初我用来在Y1轴 高度 上绘制5系列线 在Y2轴上绘制相同的5系列线 重量 两者都相对于x轴 这里不存在问题 这些系列线是标准线 用于每次计算 b 现在 如果用
  • 从打字稿接口生成 swagger 文档

    我在用着swager jsdoc https github com Surnet swagger jsdoc记录应用程序的所有 DTO 我想知道是否有任何方法可以从打字稿接口自动生成 swagger 文档 我的项目中有很多这样的东西 还有很
  • C# 锁定 SQL Server 表的方法

    我有一个 C 程序 需要对 SQL Server 表执行一组批量更新 20k 由于其他用户可以通过内联网网站一次更新一条记录 因此我们需要构建具有锁定表功能的C 程序 一旦表被锁定以防止其他用户进行任何更改 搜索 我们将需要执行请求的更新
  • 除了早期的 .NET 框架版本之外,Visual Studio 还可以定位早期的 C# 语法吗?

    简单的部分 使用下拉列表将 Visual Studio 2010 项目中的 NET 2 0 框架作为目标 困难的部分 是否可以针对特定的语法版本 例如var s hello world 在 VS2008 及以上版本中是有效的语法糖 但在 V
  • HTTP 请求从 Web 服务器分派到 CGI/FastCGI 进程

    为了更好地了解 Web 应用程序中 HTTP 请求的处理方式 Apache 等 Web 服务器如何将请求分派到其虚拟主机之一 无论框架 Rails PHP Java 如何 最初执行的程序是什么 如果有人能列出以 Rails 为例的步骤 据我
  • Android 和 SQLite:何时使用分号结束语句?

    如果您正在使用rawQuery or execSQL Android 上的 SQLite 方法 什么时候应该使用分号来结束语句 On 本教程 http www vogella com articles AndroidSQLite artic
  • 您可以从多个线程访问单个 std::unique_lock 吗?

    我在概念化如何unique lock应该是跨线程操作 我尝试制作一个快速示例来重新创建我通常会使用的东西condition variable for include
  • 使用 ng-repeat 时默认选中单选按钮

    我一直想使用 ng repeat 从屏幕上显示的单选按钮列表中签出一个单选按钮 但我的代码不起作用 这就是我正在做的 div class clubRole div div div
  • CI for Qt 应用程序:使用不同的 Qt 版本进行构建

    我使用 Travis CI 为我的简单 Qt 应用程序进行持续集成 我的 travis yml 文件看起来像这样 基于这个要点 https gist github com jreese 6207161 language cpp before
  • 如何在 C# 中获取应用程序设置的名称?

    在Visual C 的应用程序设置中 我们可以创建一系列具有特定Name Type Scope和Value的设置 我可以通过代码访问该值 string color Myproject Properties Settings Default
  • 比较 Go 模板中的两个变量

    在我传递给模板的数据中 我有两个变量Type and Res Type我想比较为我的选择字段预先选择一个选项 为了说明我的问题 我创建了这个简化版本 package main import bufio bytes html template
  • python 中的交互式输入

    以下是我需要执行的操作的说明 你要编写一个完整的程序 获取三段数据 然后对它们进行处理 这三条信息是布尔值 字符串和整数 程序的逻辑是这样的 如果布尔值为 True 则打印字符串两次 一次带双引号 一次不带 否则打印两倍的数字 这是我到目前
  • 动态 HTML 到 PDF [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要能够将动态 HTML 通过 javascript 在页面加载时呈现的 html 转换为 PDF 我
  • 从 WiX 提升的安装程序运行未提升的自定义操作

    我正在尝试弄清楚如何从提升的 WiX 安装设置程序运行自定义操作 WiX 生成的 msi 文件由 DotNetInstaller 执行 在 WiX 中 我有一个 Package 部分 其中 InstallScope 设置为 perMachi
  • Ajax 调用在 IE8 中不起作用

    我正在阅读几篇关于此的文章 并对我的代码进行了一些更改 但没有成功 任何人都可以调查一下 看看这里发生了什么 或者也许是另一种方法来完成我需要的事情 使用 ziptastic 通过邮政编码检索城市 州 该代码在 Chrome 中运行良好 h
  • __del__ 在程序结束时

    假设有一个程序 在运行时其中有几个对象 程序结束时是否调用每个对象的 del 方法 如果是的话 我可以做这样的事情 class Client del self disconnect from server 有许多潜在的困难 http doc