Yoh*_*ace 2 python iterator asynchronous generator python-typing
我创建了一个完全类型化的不和谐异步库。我有一个从 aiohttp get 请求创建对象的方法,如下例所示:
async def get_bans(self):
"""|coro|
Fetches all the bans in the guild.
"""
data = await self._http.get(f"guilds/{self.id}/bans")
for ban_data in data:
yield Ban.from_dict(construct_client_dict(self._client, ban_data))
Run Code Online (Sandbox Code Playgroud)
我想知道这个代码片段的返回类型以及它是否应该是 aAsyncGenerator[Ban, None]或AsyncIterator[Ban, None]。老实说,我一直在寻找一些信息,我可以找到任何能让我对这个主题有清晰想法的信息。
小智 6
官方文档对AsyncIterator的描述 是:
...提供
__aiter__和__anext__方法...
AsyncGenerator从文档引向PEP525。
...生成器是任何包含一个或多个
yield表达式的函数...
调用异步生成器函数的结果是异步生成器对象...
异步生成器定义了这两种方法 (
__aiter__和__anext__)
所以我认为,因为yield在你的函数中最好使用AsyncGenerator.