【发布时间】:2015-06-12 08:59:57
【问题描述】:
我有一个类,它使用内置的setattr 动态定义了几个属性。但是,这些属性的所有使用都显示为 PyCharm 未解析的引用。有没有办法(通过代码或 PyCharm 设置)帮助 PyCharm 解决这些属性?
【问题讨论】:
标签: pycharm
我有一个类,它使用内置的setattr 动态定义了几个属性。但是,这些属性的所有使用都显示为 PyCharm 未解析的引用。有没有办法(通过代码或 PyCharm 设置)帮助 PyCharm 解决这些属性?
【问题讨论】:
标签: pycharm
很遗憾,你不能。
在我看来,您可以忽略对动态属性执行 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 的父类中的文档字符串中,它也可以工作。我可以忍受在这个类和派生类中“未解决的引用”警告不活跃的缺点。
@DynamicAttrs 关键字。
试试File --> Invalidate Caches / Restart --> Invalidate and Restart
【讨论】: