我使用Python 3,並且想要使用默認設置爲 formatter_class=argparse.RawDescriptionHelpFormatter
的自定義類來包裝argparse.ArgumentParser
。我能成功地做到這一點,但是IntelliJ IDEA的2017.1與Python插件(PyCharm)給出了下面的代碼警告:是IntelliJ Python 3檢查「期待字典,得到一個字典」對超級**錯誤肯定是?
class CustomParser(argparse.ArgumentParser):
def __init__(self, formatter_class=argparse.RawDescriptionHelpFormatter, **kwargs):
# noinspection PyArgumentList
super().__init__(formatter_class=formatter_class, **kwargs) # warning in this line for the last argument if suppression comment above removed
如果一個刪除與的IntelliJ抑制comment命令上kwargs警告是「預期的字典,得到了一個字典「,但它的工作。這是一個錯誤的肯定警告還是沒有警告可以做得更好?這個警告背後有一個真正的問題,它有助於避免?
方面的問題:使用
formatter_class = kwargs.pop('formatter_class', argparse.RawDescriptionHelpFormatter)
而不是顯式定義簽名中的指定參數有什麼區別嗎?根據PEP20更明確的簽名更好,對嗎?
我現在也看到另一個警告。如果我想用'CustomParser(formatter_class = argparse.HelpFormatter)'改變默認的格式化程序''我有警告'Expected type'Type [RawDescriptionHelpFormatter]',得到'Type [HelpFormatter]'而不是'可以用'#noinspection PyTypeChecker'。這也是誤報嗎? – jan