gpt4 book ai didi

python - 如何在 python 中将实例变量设置为 fileHandle?

转载 作者:行者123 更新时间:2023-12-01 05:40:51 25 4
gpt4 key购买 nike

我想定义一个将 fileHandle 附加到类的类。例如,我可以定义一个带有实例变量的类作为文件处理程序对象,但当该对象最终被取消引用时,它是不安全的。

class CustomLoggingClass(object):
def __init__(self, *args, **kwargs):
self.fileHandle = open("logFile.json", "w+")

如何以安全的方式实现此操作,以便正确关闭 logFile.json?

最佳答案

最简单的方法可能是使用contextlib.contextmanager装饰器创建一个辅助上下文管理器函数,然后将其与with语句结合使用。例如:

class CustomLoggingClass(object):
def __init__(self, *args, **kwargs):
self.fileHandle = open("logFile.json", "w+")

def close(self):
self.fileHandle.close()

import contextlib

@contextlib.contextmanager
def cm_logger():
logger = CustomLoggingClass()
yield logger
logger.close()

if __name__ == '__main__':
with cm_logger as logger:
# do stuff with logger, a CustomLoggingClass instance
pass

with 语句和上下文管理器在 PEP 343 中讨论。 .

关于python - 如何在 python 中将实例变量设置为 fileHandle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599032/

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