(代码的简短版本)
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
答案 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似乎也知道有关此问题的错误。我会提出来的;他们获取更多信息对他们有好处。