私はPython 3を使用して、デフォルトで formatter_class=argparse.RawDescriptionHelpFormatter
を設定するカスタムクラスでargparse.ArgumentParser
を折り返したいと思っています。しかし私は、Pythonのプラグイン(PyCharm)とのIntelliJ IDEA 2017.1は、次のコードに対して警告を与え、これを正常に行うことができます。IntelliJ Python 3の検査で、「辞書を予期し、辞書を取得しました」が** kwargsのスーパーに対して偽陽性ですか?
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
1は、IntelliJの抑制コマンドを使用して、コメントを削除した場合kwargsからの警告は、「辞書を期待されています、dictを持っている "しかし、それは働いています。これは偽陽性の警告ですか、これは警告なしでもうまくできますか?この警告の背後にある本当の問題は、避けることができるということですか?
サイド質問:署名に名前付きパラメータを明示的に定義するのではなく、
formatter_class = kwargs.pop('formatter_class', argparse.RawDescriptionHelpFormatter)
を使用することに違いはありますか? PEP20によれば、より明示的に署名が明白ですよね?
私は今もまた別の警告があります。 'CustomParser(formatter_class = argparse.HelpFormatter) 'を使ってデフォルトのフォーマッタを変更したいのであれば、'予想される型'の型[RawDescriptionHelpFormatter] 'があり、 '#[noFormpection] PyTypeChecker'です。それは偽陽性ですか? – jan