2013-12-21 88 views
0

如果我運行這些內容(flags.py)通過pylint3:我該如何讓pylint不抱怨全局argparse.Namespace?

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 

這是,國際海事組織,很多醜陋。

我很想有辦法平息這個錯誤信息,特別是在這個FLAGS對象上。有沒有辦法做到這一點?我也會開放一些更好的做旗幟的方法,雖然這可能不是關於這個問題的主題,而且,是的,我知道這涉及全局狀態,即Bad(TM)。喜歡它,因爲命令行參數是全球性的,無論如何,這似乎是做給我)

+0

編寫'from flags import FLAGS'和訪問'FLAGS'並編寫'import flags'並訪問'flags.FLAGS'沒有區別。使用'namespace'關鍵字參數獨立於此。 –

回答

0

我有兩件事情說這個最徹底的方法:

  1. 我做參數手動解析,因爲我希望pylint能夠告訴發生了什麼事情。使論點 解析各種模塊很方便,但不值這個價IMO
  2. 我有時用http://stromberg.dnsalias.org/svn/this-pylint/trunk/ 以消除pylint的錯誤,就不會走開,否則
0

您可以嘗試getattr(FLAGS, 'edit')

dstromberg關於讓pylint知道發生了什麼的爭論是有效的。