Python 派林抱怨,但它是否违反了PEP8?
我的代码中有此部分:Python 派林抱怨,但它是否违反了PEP8?,python,pep8,Python,Pep8,我的代码中有此部分: class CSVFile(): # Keys in kwargs that are not allowed __black_list = ()
class CSVFile():
# Keys in kwargs that are not allowed
__black_list = ()
def __init__(self, **kwargs):
for (k, v) in kwargs.iteritems():
if k in self.__class__.__black_list:
LOG.error("%s is not allowed ", k)
setattr(self, k, v)
如您所见,我正在将key=>value
对指定为实例变量。稍后在代码中,我将使用我在这里设置的变量(例如,self.dest
)
当我用pylint
检查时,它会抱怨:
E: 54,32:CSVFile.upload_file_to_s3: Instance of 'CSVFile' has no 'dest' member
显然,如果我在\uuu init\uuu
方法中定义self.dest
,那么这个错误就会消失
所以问题是:从PEP8的角度来看,这段代码看起来“糟糕”吗 你所做的没有什么不对 记住,pylint是一个工具(也是一个很棒的工具),但肯定不是目标 您应该继续使用pylint,但有时它会造成麻烦,您可以自定义要运行的检查。在这种情况下,您希望禁用该特定检查
请参阅的答案,其中解释了如何对其进行自定义。关于您的代码,我看到的唯一潜在冲突是
**kwargs
中的键值格式只要**kwargs元素跟在后面(所有单词都是小写字母,用下划线分隔),就可以了。
PyLint向您抱怨的原因是它不能告诉您CSVFile对象将具有dest
属性(或者任何其他属性,因为它们是动态附加的)
总的问题是PyLint进行PEP8检查,但它也做其他事情。这个信息是“其他东西”的一部分
干杯。我认为这与PEP8无关,可能是一个bug。如果您的代码试图访问一个不存在的属性,您需要处理它。顺便说一句,您需要记录错误并指定一个值。这种行为是故意的吗?@alkogood point,刚意识到,当发布代码时