【问题标题】:PyCharm warns about unresolved attribute for dict generated attributesPyCharm 警告 dict 生成的属性的未解析属性
【发布时间】:2019-01-10 11:52:11
【问题描述】:

考虑以下代码:

class SomeClass:
    def __init__(self, config):
        for key, value in config.items():
            self.__setattr__(key, value)

    def foo(self):
        print(self.a)

PyCharm 2017.1.1 警告我未解决的属性a,我完全同意。但我不想在构造函数中写一大堆属性。

是否有任何解决方法可以在没有警告的情况下编写相同的功能?或者至少,我怎样才能通知 PyCharm 不要警告我这个特定类的属性?

【问题讨论】:

    标签: python python-3.x pycharm warnings


    【解决方案1】:

    你可以这样做来取悦它:

    def foo(self):
        if hasattr(self, 'a'):
            print(self.a)
    

    编辑: 警告,这是个坏主意!但是,您可以进入 pycharm Preferences > Editor > Inspection,然后在 Python 部分下,禁用“未解析的引用”检查。这会让pycharm忽略错误,但这样做是一件坏事。

    【讨论】:

    • 我有很多属性,我试图避免编写很多属性初始化。您的建议是写很多 if 语句。不,谢谢。
    • @RomanS 我没有意识到你有很多你想要这样做的属性。有一个采用属性名称字符串的方法会起作用吗?所以它会检查 attr 是否存在,然后打印它?还是您需要每个人做不同的事情?
    • 看第一个帖子。引用:“但我不想在构造函数中写一大堆属性”。所以,我有config: dict,比方说,从 yaml/json/etc 文件中读取。我可以使用那个简单的循环将这些配置选项值分配给对象属性。我将在一些对象方法中使用它们。您的方法foo 仅适用于单个属性,但我需要使用所有属性。
    • 我知道这一点。但你是完全正确的:这是一个坏主意 :) 如果有机会只为一节课关闭它会很棒......
    • @RomanS 不幸的是,我不认为你会找到你要找的东西,主要是因为这是不好的做法,所以你要么关闭检查,要么调整代码以获得良好的做法。祝你好运!
    猜你喜欢
    • 2021-09-30
    • 1970-01-01
    • 2019-08-08
    • 2018-06-08
    • 2020-01-23
    • 2021-08-10
    • 2017-10-07
    • 2022-08-24
    • 2020-03-05
    相关资源
    最近更新 更多