继承的嵌套类成员上的Pylint警告
我们有一些特定的功能是用Python类来实现的,这样我们的开发者可以很方便地进行扩展。每个类里面都有一个叫做Config的内部类,里面有一系列的项目。基础类的Config类是空的,而每个继承这个基础类的子类都会在里面定义一些项目。可是,每当使用Config子类的项目时,pylint就会发出警告。
比如,这段代码:
class A(object):
class Config(object):
def __init__(self):
self.item1 = 1
self.item2 = 2
def __init__(self):
self._config = self.Config()
class B(A):
class Config(A.Config):
def __init__(self):
super(B.Config, self).__init__()
self.item3 = 3
self.item4 = 4
def do_something(self):
if self._config.item3 == 3:
print 'hello'
if self._config.item1 == 5:
print 'bye'
然后你可以这样使用它:
>>> B().do_something()
hello
我们的程序在这个思路下运行得很好。但问题是,每次我们使用这些项目时,pylint还是会继续发出警告。例如,在这种情况下,它会说:
E1101(no-member) Instance of 'Config' has no 'item3' member
所以我想问的是,如何在不关闭这些警告的情况下避免pylint的提示?有没有更好的方法来实现我想要的功能?请注意,在实际程序中,配置值是根据用户数据而变化的,而不是一堆常量。
非常感谢。
1 个回答
0
我觉得这个看起来有点复杂。其实用字典来做配置就很好了。例如:
class A(object):
def __init__(self):
self._config = {
'item1': 1,
'item2': 2,
}
class B(A):
def __init__(self):
super(B, self).__init__()
self._config.update({
'item3': 3,
'item4': 4,
})
def do_something(self):
if self._config['item3'] == 3:
print 'hello'
if self._config['item1'] == 5:
print 'bye'