【问题标题】:Pycharm inspection not flagging unresolved references in classes inherited from a stubbed objectPycharm 检查未标记从存根对象继承的类中未解析的引用
【发布时间】: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 在这种情况下会禁用未解析的引用检查。
  • 我已经在存根文件中评论过,我会看看是否这样做。

标签: pycharm pyside2


【解决方案1】:

正如 cmets 中的 user2235698 所暗示的,其中一个存根对象 (QObject) 已重新实现 __getattr__,这导致 Pycharm 接受任何正确的属性。

从 .pyi 文件中删除这一行对问题进行了排序。

【讨论】:

    猜你喜欢
    • 2017-10-07
    • 2015-02-03
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2015-06-09
    • 2023-02-22
    相关资源
    最近更新 更多