Python上下文管理的成员变量?

2023-11-26

上下文管理器定义设置/清理功能__enter__ and __exit__。惊人的。我想保留一个作为成员变量。当我的类对象超出范围时,我希望执行此清理操作。据我所知,这基本上是 C++ 构造函数/析构函数自动发生的行为。

class Animal(object):

    def __init__(self): 
        self.datafile = open("file.txt") # This has a cleanup function
        # I wish I could say something like...
        with open("file.txt") as self.datafile: # uh...

    def makeSound(self):
        sound = self.datafile # I'll be using it later

# Usage...
if True:
    animal = Animal()
# file should be cleaned up and closed at this point.

我给班级一个close函数如果有意义,然后使用closing上下文管理器:

class MyClass(object):
    def __init__(self):
        self.resource = acquire_resource()

    def close():
        release_resource(self.resource)

然后像这样使用它:

from contextlib import closing

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

Python上下文管理的成员变量? 的相关文章

  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • Pycharm 在 os.path 连接上出现“未解析的引用”

    将pycharm升级到2018 1 并将python升级到3 6 5后 pycharm报告 未解析的引用 join 最新版本的 pycharm 不会显示以下行的任何警告 from os path import join expanduser
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 当字段是数字时怎么说...在 mongodb 中匹配?

    所以我的结果中有一个名为 城市 的字段 结果已损坏 有时它是一个实际名称 有时它是一个数字 以下代码显示所有记录 db zips aggregate project city substr city 0 1 sort city 1 我需要修
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • IOS 中获取错误的运营商名称

    我正在开发一个 IOS 应用程序 我的要求是获取移动运营商名称 我使用了以下代码 In h import
  • 正则表达式跳过模式

    Problem 我需要用百分号 替换所有星号 方括号中的星号应被忽略 Example Test public void Replace all asterisks outside the square brackets var input
  • 使用 PDFBox 进行图像旋转

    我对使用 PDFBox 很陌生 我需要的是将带有旋转的图像添加到现有的 PDF 中 我知道如何添加图像 但我的问题是如何旋转图像 我见过一些关于 AffineTransform 和 Matrix 的东西 但我不知道那是什么以及它是如何工作的
  • jQuery 更改(使用淡入淡出动画)悬停时 div 的背景图像

    我正在尝试使用 jQuery 更改悬停时 div 的背景图像 这是我到目前为止所想到的 但是它不起作用 html div class logo div css logo width 300px height 100px background
  • Scipy插值如何将3x3矩阵调整大小/重新采样为5x5?

    EDIT 保罗在下面解决了这个问题 谢谢 我正在尝试将 3x3 矩阵重新采样 升级 为 5x5 用 interpolate interp2d 或 interpolate RectBivariateSpline 或其他有效的方法 填充中间点
  • 在 Android 上录制视频时拍照

    我编写了如下所示的 Android 服务 用于在后台录制前置摄像头 这非常有效 但现在我想在录制时每 5 秒拍一张照片 这有可能吗 当我尝试打开第二个摄像头 在另一个服务中 时 出现错误 public class RecorderServi
  • 关于 volatile 关键字的问题

    我知道通过volatile关键词 volatile int k 7 我们寻找编译器该变量可以随时更改 但是一个简单的呢 int k 7 因为它不是恒定的 我们可以随时更改它吗 有什么不同吗 volatile防止编译器优化并告诉编译器声明为
  • 如何在 Windows 7 上安装 Imagick/imagemagick PHP 扩展

    如何在 Windows 7 中安装 imagemagick 我按照这些说明进行操作 在 Windows XP php 5 2 x 上安装 IMagick 下载并安装 ImageMagick 6 5 8 7 Q16 windows dll e
  • 如何在 C++ 中将字节数组发送到另一个进程

    我一直在网站上检查一种在 C 中将数据从一个进程传输到另一个进程的方法 我找到了 SendMessage 方法 但它似乎无法获取字节数组 为了解释一下这里的上下文 我有一个将数据发送到另一个应用程序的应用程序 我们有几个具有不同 ID 的对
  • Numpy 字符串上的“where”

    我想在字符串数组上使用 numpy where 函数 然而 我这样做并不成功 有人可以帮我解决这个问题吗 例如 当我使用numpy where在下面的示例中我收到错误 import numpy as np A apple orange ap
  • 在 tvOS 模拟器上卸载应用程序

    如何从 tvOS 模拟器卸载应用程序 我已经尝试长按该图标 但没有出现 关闭按钮 我知道 这是一个 Beta 版本 也许将来他们会实现类似 iOS 的功能 谢谢 Method 1 从主屏幕 Settings gt General gt Ma
  • 有条件地向 ui-select 添加“multiple”属性

    我正在尝试添加multiple归因于ui select指令基于某个属性的值 使用ng attr 指示 不幸的是 这对我不起作用 我设置了一个 plunker 示例来展示正在发生的事情 笨蛋的例子 Edit 读完上述内容后我终于明白了GitH
  • 我们可以在 Firebase Cloud Messaging 中创建多少个主题?

    我正在构建一个使用 Firebase Cloud Messaging 的应用程序 但我有一些疑问 我想知道我们可以在一个应用程序实例中制作多少个主题 In 官方文档它写道 当单个应用实例订阅过多主题时 它检索错误TOO MANY 主题 我想
  • 如何在我的 PHP/SQL/HTML/CSS 代码上实现 MVC 风格? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我一直在开发一个程序来可视化一些数据 我的程序从 MySQL 数据库获取特定输入并绘制一些图表 libchart 库 创建一些表格等 我的问题是 现在那里是一个代码地狱 我有大约
  • 在加特林场景之间共享数据

    我有一个场景 在包含用户名和密码的 CSV 文件的帮助下 获取会话 ID 并使用 saveAs 保存它们 我希望能够在以下场景中使用这些会话 ID 该场景执行一些需要会话 ID 的操作 此外 我还想将会话 ID 与其用户名相关联 所以本质上
  • WAMP 和 pcntl_fork

    有没有办法让 pcntl fork 在 WAMP 中工作 我需要开发一个分叉解决方案并在本地进行测试 不 这是不可能的 这PCNTL扩展需要 nix 平台 现在 话虽如此 你想做什么 你能在不分叉的情况下解决它吗 Edit 启动后台进程的一
  • angularjs $http.get 获取json在服务层不起作用

    我正在开发一个 AngularJS 应用程序 作为我的 AngularJS 学习的一部分 我有控制器 从那里我调用服务层 leagueManager service teamsService function http var teams
  • Python sys.stdout.flush() 不起作用

    下面的代码应该打印从 1 到 10 中间间隔 1 秒 但是它在实际打印任何内容之前等待 10 秒 然后一次性打印所有内容 如何取消缓冲输出 import sys import time for count in range 10 sys s
  • IE8 不会下载启用了 UAC 的自定义 mime/类型的文件

    我在本地计算机 Windows 7 x64 IE8 net 3 5 C 上运行一个 net 服务 该服务将文件返回到浏览器以响应用户操作 使用 firefox 或 chrome 可以正确下载文件 并且我们的应用程序通过自定义 mime 类型
  • Python上下文管理的成员变量?

    上下文管理器定义设置 清理功能 enter and exit 惊人的 我想保留一个作为成员变量 当我的类对象超出范围时 我希望执行此清理操作 据我所知 这基本上是 C 构造函数 析构函数自动发生的行为 class Animal object