我刚刚尝试用Pylint链接一些代码,最后一个错误是
R0902: too-many-instance-attributes (8/7)
我理解限制实例属性数量的理由,但7个似乎有点低。我也意识到,林特不应该有最后的话。不过,我想知道我应该做些什么,而不是:
def __init__(self, output_file=None, output_dir=None):
"""
Set the frobnicator up, along with default geometries
"""
self.margin = 30
self.pos = [0, 0]
self.sep = [5, 5]
self.cell = [20, 20]
self.frobbr = library.Frobbr()
page = self.frobbr.get_settings('page')
self.lim = [page.get_width() - self.margin,
page.get_height() - self.margin]
self.filename = output_file
self.moddir = output_dir
我应该把几何图形打包成一个小块,做些别的事情来阻止Pylint的抱怨,还是忽略它(这是我真的不想做的)?
发布于 2014-06-26 15:45:23
linter的工作是让您意识到代码中的潜在问题,正如您在问题中所说的,它不应该是最后一个字。
如果您考虑了pylint必须说什么,并决定对于这个类来说,您所拥有的属性是适当的(在我看来是合理的),那么您可以通过在类中添加禁用注释来抑制错误,并表明您已经考虑过这个问题:
class Frobnicator:
"""All frobnication, all the time."""
# pylint: disable=too-many-instance-attributes
# Eight is reasonable in this case.
def __init__(self):
self.one = 1
self.two = 2
self.three = 3
self.four = 4
self.five = 5
self.six = 6
self.seven = 7
self.eight = 8
这样,你既不会忽视Pylint,也不会忽视它的奴隶;您将它用作有用但容易出错的工具。
默认情况下,在本地禁用检查时,Pylint将生成一条信息消息:
Locally disabling too-many-instance-attributes (R0902) (locally-disabled)
您可以通过以下两种方式之一防止该消息的出现:
disable=
标志:
$ pylint --禁用=本地禁用的frob.pypylintrc
配置文件中添加一个指令:
消息控制禁用=本地禁用发布于 2016-02-12 20:48:27
这是一种意识形态上的反对,但就我个人而言,我倾向于使这种变化尽可能具有普遍性。如果在一个文件中7是不够的,而且我选择在这里允许它,为什么不到处都允许呢?我并不总是对皮棉的规定进行全面的修改,但我至少考虑过了。为此,如果要进行全面更改,请在.pylintrc文件中更改DESIGN
部分中的“更改”( max-attributes=7
)。
因为我认为7的整体水平有点低,所以我改变了:
[DESIGN]
max-attributes=7
至
max-attributes=12
发布于 2014-06-27 07:21:27
零比雷埃夫斯的答案是一个很好的答案。尽管如此,由于您为init方法提供了很少的上下文,甚至不是一个真实的类名,所以很难肯定,但是我要说,文件名和moddir与边边、位置等无关。
IO操作通常最好隔离为函数,而不是方法。它们通常是许多不同的格式和序列化选项,大多数情况下,您不希望将它们与对象逻辑(方法)混合。添加一个新的IO函数,它接受一些文件、字符串、blob或其他东西,并返回被编码的对象,这比维护一个具有处理许多不同IO操作的方法的对象要容易得多。
https://stackoverflow.com/questions/24434510
复制相似问题