我想在我的项目中引入部分类型注释。例如超载。我发现pep561引入了部分存根文件支持。
我使用PyCharm开发项目,并添加了相应的*.pyi
文件。并获得了预期的信息,但是PyCharm报告无法在pyi文件中找到参考。
当pyi文件中没有任何条目时,是否可以强制PyCharm查找原始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
答案 0 :(得分:0)
根据PEP 484,这是可能的,只需在您的.pyi
的顶层添加以下行即可(我检查了它是否适用于PyCharm 11.0.7):
def __getattr__(name) -> Any: ...
其他库(至少为typeshed)允许使用类似的语法将不完整的类存根与.py
中的类定义进行合并
class Foo:
def __getattr__(self, name: str) -> Any: ... # incomplete
x: int
y: str
但是据我所知,这似乎并不是PEP 484的一部分,也没有在PyCharm中实现(自11.0.7起)。我刚刚为此功能创建了一个request:我偶然发现了这个stackoverflow问题,当时正在寻找一种将不完整的类存根与类定义合并的方法,并得出结论认为尚不可行。