如何让pylint不抱怨全局argparse.Namespace?

时间:2013-12-21 21:41:59

标签: python python-3.x pylint

如果我通过pylint3运行这些内容(flags.py):

import argparse

FLAGS = argparse.Namespace()
_PARSER = argparse.ArgumentParser()
_PARSER.add_argument('--edit', action='store_true')
_PARSER.parse_args(sys.argv, namespace=FLAGS)

def test():
  print(FLAGS.edit)

在其他错误(我知道如何修复)中,我收到此错误:

E: 12,8:test: Instance of 'Namespace' has no 'edit' member

我可以通过不将namespace参数用于parse_args来解决这个问题,但我使用namespace参数,因为它允许我这样做

from flags import FLAGS
FLAGS.edit

我想要访问我的标志而不是:

import flags
flags.FLAGS.edit
,这是IMO,非常丑陋。

我很想有办法在此FLAGS对象上特别平息此错误消息。有没有办法做到这一点?

(我也会接受一些更好的做旗帜的方式,虽然这可能不是这个问题的主题。而且,是的,我知道这涉及全球状态,这是Bad(TM)。我很高兴有了它,因为命令行参数无论如何都是全局的,这似乎是对我来说最干净的方法。)

2 个答案:

答案 0 :(得分:0)

我有两件事要说:

  1. 我手动解析参数,因为我希望pylint能够 告诉你发生了什么。进行论证的各种模块 解析很方便,但价格不值得IMO
  2. 我有时会使用http://stromberg.dnsalias.org/svn/this-pylint/trunk/ 消除不会消失的pylint错误

答案 1 :(得分:0)

您可以尝试getattr(FLAGS, 'edit')

dstromberg关于让pylint知道发生了什么的论点是有效的。