【问题标题】:Attributes set with setattr show as unresolved references in PyCharm使用 setattr 设置的属性在 PyCharm 中显示为未解析的引用
【发布时间】:2015-06-12 08:59:57
【问题描述】:

我有一个类,它使用内置的setattr 动态定义了几个属性。但是,这些属性的所有使用都显示为 PyCharm 未解析的引用。有没有办法(通过代码或 PyCharm 设置)帮助 PyCharm 解决这些属性?

【问题讨论】:

    标签: pycharm


    【解决方案1】:

    很遗憾,你不能。

    在我看来,您可以忽略对动态属性执行 Alt + Enter 的警告,然后选择“忽略未解析的引用”。

    或者,如果您不想对所有类属性都这样做,您可以在类文档字符串中添加@DynamicAttrs。

    这里是一个例子:

    class YourClassWithSeveralAttributes(object):
        """@DynamicAttrs""" # <-- here
    
        def __init__(self):
            setattr(self, 'foo', 1)
            setattr(self, 'bar', 2)
            setattr(self, 'foo1', 11)
            setattr(self, 'bar2', 22)
    

    请记住,以前的解决方案都不会使 PyCharm 能够识别您的动态属性,并且这些属性将无法使用自动完成功能。它们只是忽略警告的方式。

    【讨论】:

    • @DynamicAttrs 太棒了!如果我将它添加到调用setattr 的父类中的文档字符串中,它也可以工作。我可以忍受在这个类和派生类中“未解决的引用”警告不活跃的缺点。
    • 还有没有办法通过 docstring 提示属性,以便它们可用于自动完成并避免警告?类似于@DynamicAttrs 关键字。
    • 我不知道这样的事情,对不起。
    【解决方案2】:

    试试File --> Invalidate Caches / Restart --> Invalidate and Restart

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2017-10-07
      • 2015-02-03
      • 2020-08-17
      • 1970-01-01
      • 2016-07-20
      • 2019-08-19
      相关资源
      最近更新 更多