我想在我的项目中引入部分类型注释,例如用于重载。我发现pep561引入了部分存根文件支持。
我使用PyCharm开发我的项目,并添加了相应的*.pyi
文件。得到了期望的信息,但PyCharm报告说在pyi文件中找不到引用。
是否可以强制PyCharm在pyi文件中没有条目时查找原始py文件?或者也可以通过类的部分条目实现吗?
├── main.py
└── pep561_test
├── __init__.py
└── __init__.pyi
main.py
from pep561_test import AA, BB, CC
AA().test1(1)
AA().test1(True)
AA().test1('a')
AA().test2(1)
BB().test1(1)
BB().test2(1)
__init__.py
class AA:
def test1(self, a):
pass
def test2(self, a):
pass
class BB:
def test1(self, a):
pass
def test2(self, a):
pass
class CC:
def test1(self, a):
pass
def test2(self, a):
pass
__init__.pyi
class AA:
def test1(self, a: int) -> int: ...
def test1(self, a: bool) -> str: ...
def test2(self, a):
pass
class BB:
def test1(self, a):
pass
py
和pyi
存根的定义合并到同一文件中,来自PEP 561:“这可以被视为将存根包复制到与相应运行时包相同的目录中...并对组合的目录结构进行类型检查”的功能等效方式。这样__init__.pyi
将覆盖__init__.py
。mypy
无法像PyCharm那样执行此操作:main.py:1: error: Module 'pep561_test' has no attribute 'CC'
。 - Pavel Karateevpy
文件中添加类型提示? - Wombatz# noinspection PyOverloads
。 - Grzegorz Bokota