PyCharm F-字符串使用(未解决属性引用 '__name' 类...)
问题描述:
(代码短版)PyCharm F-字符串使用(未解决属性引用 '__name' 类...)
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警告我:未解决的属性引用 '__name'对于类“动物”
该代码仍按预期工作。 为什么会弹出此警告?
f-strings对我来说似乎是str.format的更清晰版本,they are also faster。 PS。由于我是新手到Python,请随时带出所有的时尚错误或什么可以和应该做的更好:)
Python版本:3.6.4 PyCharm社区版本:2017年3月1日
答
从大约一年前有this post也this。这似乎可能是PyCharm的一个问题。
但是,如果您删除f
字符串中的双下划线,则linter不会再抱怨。
使用dunder前缀属性调用''.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似乎知道有关此问题的错误。我会提起它;这对他们获得更多信息会有好处。
呵呵,有趣的是,PyCharm本身为我提供了一个更正“转换为f-字符串”的旧代码... – Estonian
您已经在PyCharm中发现了一个错误,我想。它可能是通过在你的属性名称中使用双下划线来抛出的,这会引发名称混乱。如果您尝试从其他课程访问这些课程,则需要使用重名的名称。 (在这种情况下,实际上可能是错误的:“Animal”的子类不需要自己的名字,性别,身高和体重属性。) – kindall
我应该报告吗? – Estonian