我有两个类,看起来像这样:
class BaseClass:
def the_dct(self):
return self.THE_DCT
class Kid(BaseClass):
THE_DCT = {'key': 'value'}
# Code i ll be running
inst = Kid()
print(inst.the_dct())
继承必须如此;第二类包含THE_DCT
,第一类包含def the_dct
。
它工作得很好,但我的问题是我在PyCharm(未解析的属性引用)中得到了一个关于BaseClass
中THE_DCT
的警告。
- 它警告我的原因是什么(比如我为什么要避免它)?
- 有什么我应该做的不同吗?
2条答案
按热度按时间kuuvgm7e1#
除了现有答案之外,或者作为替代方案,您可以使用
Type Hints
。这满足了PyCharm的警告,并且还将属性区分为继承的(或者至少不是类的原生属性)。这就像在类的顶部添加THE_DCT: dict
一样简单(在其他任何东西之前)。我更喜欢这种方法,因为它不需要添加不必要的占位符属性(
self.THE_DCT = {}
),而且由于它在视觉上与声明属性不同,它还可以消除在占位符属性旁边添加注解以解释它是继承的需要。h7wcgrx32#
在
BaseClass
中,您引用self.THE_DCT
,但当PyCharm查看该类时,它发现THE_DCT
不存在。假设您将其视为抽象类,PyCharm并不知道这是您的意图。它所看到的只是一个访问属性的类,而属性并不存在,因此它显示警告。
尽管你的代码可以运行得很好(只要你从来没有示例化
BaseClass
),但你真的应该把它改为: