首页 > 解决方案 > 必须 __aenter__ 返回一个可等待的吗?

问题描述

我对PEP 492中给出的异步上下文管理器的定义感到困惑:

添加了两个新的魔法方法:__aenter__ 和 __aexit__。两者都必须返回一个awaitable

示例代码是:

class AsyncContextManager:
    async def __aenter__(self):
        await log('entering context')

    async def __aexit__(self, exc_type, exc, tb):
        await log('exiting context')

但是这两个协程不返回任何东西......是吗?


这个难题的一些可能的解决方案:

  1. 我不明白是做什么await的。
  2. 我不知道函数如何选择它们的返回值。
  3. 以上两种。

标签: python-asynciopython-3.7

解决方案


推荐阅读