【发布时间】:2021-06-17 15:47:26
【问题描述】:
Python 文档建议可以实现__await__ 方法,该方法返回和迭代器,并且该类将变为可等待的。我测试了以下代码。
class AwaitableClass:
async def set_attr(self):
self.result = await some_coro()
def __await__(self):
return self.set_attr().__await__()
async def main():
obj = await AwaitableClass() #obj gets bound to None
obj = AwaitableClass() #Creates an instance of AwaitbleClass
await obj #Calls __await__
有什么想法吗?
【问题讨论】:
-
如果我理解您的问题,您正在尝试创建一个也是迭代器的类。我已经为此添加了一个答案,但如果我有误解,请告诉我,以便我更新我的答案。
-
不清楚你的问题是什么。您希望您的代码做什么,而它目前没有做什么?据我所知,您已经以一种有意义的方式实现了 await,它返回一个可迭代对象,您可以成功地等待它。