gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:55:02 24 4
gpt4 key购买 nike

上下文管理器定义设置/清理函数 __enter____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

关于Python上下文管理的成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072664/

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