gpt4 book ai didi

python - 编写一个只能用作上下文管理器的 Python 类

转载 作者:太空狗 更新时间:2023-10-29 21:49:46 26 4
gpt4 key购买 nike

<分区>

在 Python 中有没有一种方法可以编写一个除非与 with 语句一起使用就会出错的类?

# Okay:
with Foo() as f1:
f1.func1()
f1.func2()

# Not okay:
f2 = Foo()
f2.func1()

我可以手动完成:让 __enter__ 设置一个标志并让所有其他方法检查该标志。但是有更好的方法吗?

这是非自从方法的代码:

class Foo(object):
def __init__(self):
self._entered = False

def __enter__(self):
self._entered = True
return self

def _verify_entered(self):
if not self._entered:
raise Exception("Didn't get call to __enter__")

def __exit__(self, typ, val, traceback):
self._verify_entered()
print("In __exit__")

def func1(self):
self._verify_entered()
# do stuff ...

def func2(self):
self._verify_entered()
# do other stuff

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