gpt4 book ai didi

Python上下文管理器

转载 作者:行者123 更新时间:2023-12-05 09:30:00 25 4
gpt4 key购买 nike

尝试使用我的小方法但出现以下错误:

class mycls:

def __init__(self):
...

def __enter__(self):
...

def little(self):
...

def __exit__(self, exc_type, exc_val, exc_tb):
...


with mycls() as cl:
cl.little()
with cl:
cl.little()
with cl:
cl.little()
cl.little()

错误:

AttributeError: 'NoneType' object has no attribute 'little'

最佳答案

with 语句不会将 mycls 的实例本身绑定(bind)到 cl,而是将该实例的 __enter__ 的返回值 方法。目前,mycls.__enter__ 返回 None,因此会出现观察到的错误。将 __enter__ 更改为

def __enter__(self):
return self

并且您的代码应该按预期工作。

代码如下

with foo as bar:
...

是(忽略了很多细节)大致相同

x = foo()
bar = x.__enter__()
...
x.__exit__()

关于Python上下文管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70047361/

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