我有以下代码:
class A(object):
def random_function(self):
print self.name
def abstract_function(self):
raise NotImplementedError("This is an abstract class")
class B(A):
def __init__(self):
self.name = "Bob"
super(B, self).__init__()
def abstract_function(self):
print "This is not an abstract class"
Pylint报告错误:
ID:E1101 A.random_function:“A”的实例没有“名称”成员
这是真的,但我不在乎,因为A是抽象的。有没有办法摆脱这个警告而不仅仅是压制它?
由于
答案 0 :(得分:5)
最好在A中定义名称。考虑某人(或者你在几周内)想要从A继承并实现abstract_function:
class C(A):
def abstract_function(self):
print 'his is not an abstract class'
现在,即使C中没有任何内容出现错误,以下内容也会引发错误:
c = C()
c.random_function()
如果你在A中使用self.name,它应该在那里定义(并且假设它应该默认为合理的东西,说它还没准备好使用):
class A(object):
name = None
def random_function(self):
print self.name
这将使您的代码更清晰/更不容易出错,您还可以摆脱pylint错误。
答案 1 :(得分:3)
如果您使用Mixin
后缀A,则pylint不会报告
答案 2 :(得分:1)
在您的情况下,我可以使用以下选项:
pylint solution.py --generated-members=name
但是,最好考虑将name = None
添加到基类。