引数のデフォルト値を持つパーサーを作成し、さらに引数のデフォルト値を持つサブパーサーを与えるとします。
In [1]: parser = argparse.ArgumentParser(description='test')
In [2]: parser.add_argument("--test", dest="test", default="hello")
Out[2]: _StoreAction(option_strings=['--test'], dest='test', nargs=None, const=None, default='hello', type=None, choices=None, help=None, metavar=None)
In [3]: parser.get_default("test")
Out[3]: 'hello'
In [4]: subparsers = parser.add_subparsers(dest="command")
In [5]: parser_other = subparsers.add_parser("other")
In [6]: parser_other.add_argument("--other-test", dest="other_test", default="world")
Out[6]: _StoreAction(option_strings=['--other-test'], dest='other_test', nargs=None, const=None, default='world', type=None, choices=None, help=None, metavar=None)
In [7]: parser_other.get_default("other_test")
Out[7]: 'world'
これで問題ありません。しかし、上から親パーサーを作成して返す関数があるとしますが、サブパーサーparser
に直接アクセスすることはできません。
サブパーサー引数のデフォルトを出力するにはどうすればよいですか? または、各サブパーサーへのハンドルを個別に取得しますか?
In [8]: parser._subparsers._defaults
Out[8]: {}
In [9]: parser._subparsers.get_default("other_test") # is None
デフォルトを表示できる、parser._subparsers
またはからの属性またはメソッドはこれ以上ないようです。parser
全体的な問題は次のとおりです。親パーサーへのハンドルしかない場合に、サブパーサーのデフォルトにプログラムでアクセスする方法は?