Lui*_*uis 11 python pep8 pylint namedtuple
我写了一个小python模块,我使用几个命名元组来传递信息,因为我觉得它们很有表现力.我考虑了这些类型并按照PEP8类名称(CamelCased)命名它们.然而,pylint看到了这条线:
PersonData = collections.namedtuple('PersonData', 'name surname age')
Run Code Online (Sandbox Code Playgroud)
在模块的全局范围内,并且:无效的常量名称'PersonData'.
我是否误用了名字组?什么是pythonic推荐?我只能想到抑制警告,将结构重命名为PERSON_DATA,或使其成为完整的类.请注意,在我的情况下,它有没有意义,但它有方法.
如果答案是抑制警告.这不是pylint vs命名元组的反复出现的问题吗?
(使用pylint-0.26.0,python-2.7.4)
此问题已在较新版本的pylint中得到解决.
我的系统从ubuntu(13.04)存储库(pylint-0.26.0)中选择了版本.使用virtualenv我可以pip安装pylint-1.0.0来识别命名元组,并且实际上将使用与类相同的格式强制执行.
请注意,如果您正在对字段字符串进行字符串操作,则不会将其拾取.例如:
PersonData = collections.namedtuple('PersonData', 'name ' + 'surname age')
Run Code Online (Sandbox Code Playgroud)
仍然会导致pylint-1.0.0吐出无效常量名称的错误代码.在这种情况下,唯一的解决方法是根据Martijn Pieters的建议禁用警告.
你可以忽略pylint这里,你正好使用驼峰案例命名约定.
您可以取消警告:
PersonData = collections.namedtuple('PersonData', 'name surname age') # pylint: disable-msg=C0103
Run Code Online (Sandbox Code Playgroud)
namedtuple 是一个类工厂,因此使用类的命名约定.