我可以从其他Python类型存根文件中重新导出类型吗?

问题描述

我正在为专有Python平台编写类型存根。该平台通常在某些模块中定义类,然后从其他模块中重新导出它们。我需要类型存根来反映该类型存在于多个文件中。

例如

_foo.py:

class SomeType:
    # Implementation here

foo.py:

from _foo import SomeType

如何为这些文件编写类型存根?

我已经尝试过了:

_foo.pyi:

class SomeType:
    ...

foo.pyi:

from _foo import SomeType

但是它不起作用,mypy抛出此错误:

错误:未定义名称'foo.SomeType'

有没有一种方法可以在不将类型存根复制粘贴到两个文件中的情况下完成这项工作?

解决方法

经过反复试验,我注意到这可行:

foo.pyi:

from _foo import SomeType

__all__ = ["SomeType"]

我对此并不感到兴奋,因为它看起来可能有副作用,但目前它仍然有效。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...