【发布时间】:2021-08-27 07:28:34
【问题描述】:
我在 PyCharm(Professional 2020.3)中做了很多 PySide2 开发。
我安装了 PySide2 的存根文件,这给了我很好的自动完成功能,但不知何故,它在一些相当明显的情况下无法检测到未解析的引用。
看这个截图:
从任何具有实际 python 定义的类继承时,一切都很好,但是当父类来自存根 (pyi) 文件时,它似乎没有检测到引用未解析。存根文件 self.missing 中没有任何地方定义(并且它以任何名称发生)。
我已经在网上搜索了一段时间,但我能找到的只是人们抱怨 pycharm 将太多东西标记为缺少引用,而这种情况下它标记得不够多。
是否有特殊设置可以设置在某处?是否需要以不同方式编写的pyi文件的微妙之处?或者可能是 PyCharm 错误?
【问题讨论】:
-
QWidget 或任何 StubbedTest 祖先是否定义了
__getattr__函数? -
是的,其中一个父类有:def __getattr__(self, name: str) -> typing.Any: ...
-
就是这个原因。由于
__getattr__可以提供额外的属性,PyCharm 在这种情况下会禁用未解析的引用检查。 -
我已经在存根文件中评论过,我会看看是否这样做。