【发布时间】:2018-12-23 14:48:09
【问题描述】:
假设我有一些我希望它运行的代码:
with F() as o:
while True:
a = o.send(2)
print(a)
这意味着F 类应该返回一个generator 也是context manager,一般我也希望一个上下文管理器作为生成器。
我试过这个:
class F:
def __enter__(self):
return self
def __exit__(self, *exc):
print('exit')
def __next__(self):
return 5
def __iter__(self):
return self
正如预期的那样,这将返回AttributeError: 'F' object has no attribute 'send',我通过添加来处理这个错误:
def send(self, param):
self.__next__()
但我认为这不是一个好方法,我环顾四周找到this,但他们没有按照我的意愿使用send,我需要该实例作为生成器。
【问题讨论】:
标签: python python-3.x generator contextmanager