有一个类扩展了另一个类并覆盖了一个返回迭代器的协程:
class Repository:
async def run(self, query: Query) -> AsyncIterator[int]:
...
class MyRepository(Repository):
async def run(self, query: Query) -> AsyncIterator[int]:
...
Run Code Online (Sandbox Code Playgroud)
运行 mypy 返回此错误:
error: Return type "AsyncIterator[int]" of "run" incompatible with return type "Coroutine[Any, Any, AsyncIterator[int]]" in supertype "Repository"
Run Code Online (Sandbox Code Playgroud)
协程的类型与普通函数一样,所以我不确定正确的方法是什么。
使用 ABC 类不会修复它:
class Repository(metaclass=ABCMeta):
@abstractmethod
async def run(self, query: Query) -> AsyncIterator[int]:
Run Code Online (Sandbox Code Playgroud)