类中的PyCharm f-string用法显示警告(类的未解析属性引用'__name')

时间:2017-12-27 17:10:45

标签: python pycharm

(代码的简短版本)

class Animal:
    __name = ""
    __gender = "unknown"
    __height = 0
    __weight = 0
    __hungry = False

    def __init__(self, name, gender, height, weight):
        self.__name, self.__gender, self.__height, self.__weight = name, gender, height, weight

    def toString(self):
        return f'{self.__name} is a {self.__gender}, {self.__height} m tall and weights {self.__weight} kg.'

PyCharm警告我:类'Animal'的未解析属性引用'__name'

代码仍然按预期工作。 为什么弹出此警告?

对于我和they are also faster,f-strings似乎是str.format的一个更干净的版本。 PS。由于我是Python的新手,请随时提出所有时尚错误或可以做得更好的错误:)

Python版本:3.6.4 PyCharm社区版:2017.3.1

Picture of the code and the error

1 个答案:

答案 0 :(得分:0)

大约一年前有this post,还有this。好像这可能是PyCharm的一个问题。

但是,如果删除f字符串中的双下划线,则linter不再抱怨。

使用dunder prefixed属性调用''.format()似乎也不会产生错误或警告。

正如上面提到的@kindall prefixing with the double underscore调用了名称错误。

class Animal:
    __X = 'y'

    def __init__(self, name="", gender="", height=0, weight=0, hungry=False):
        self.name = name
        self.gender = gender 
        self.height = height
        self.weight = weight
        self.hungry = hungry

    def to_string(self):
        return f'{self.name} is a {self.gender}, {self.height} m tall and weights {self.weight} kg.'

    def to_string_format(self):
        return '{}'.format(self.__X)

they似乎也知道有关此问题的错误。我会提出来的;他们获取更多信息对他们有好处。