すでに引数グループが定義されているとします。今私はいくつかの追加の引数を追加するためにそれらの1つにアクセスしたいです。だから、argparseでこれを行う最良の方法は何ですか?今度は私のアプローチは次のようになります:argparseですでに定義されている引数グループにアクセスするにはどうすればよいですか?
def get_parser(self, ...):
parser = ...
matching_groups = (g for g in parser._action_groups
if g.title == 'group name')
group = next(matching_groups, None) or parser
group.add_argument('-s', '--some-new-argument', ...)
return parser
「保護された」メンバーに直接アクセスしないようにするもっと洗練された方法はありますか?
いいえ、これらのグループの「保護されていない」リストはありません。 Pythonでは、このような属性名の使用は「カジュアルなユーザーにはこれを必要としないと思っています」という意味ですが、知識のあるユーザーはそれらを使用することを禁じられていません。 'argparse.py'では、' _action_groups'は '_add_container_actions'の' parents'メカニズムと 'help formatter'を設定するときに使われます。リストは解析に使用されません。 – hpaulj
'_action_groups'の他の用途:https://stackoverflow.com/questions/39047075/reorder-python-argparse-argument-groups、https://stackoverflow.com/questions/12268602/sort-argparse-help-alphabetically – hpaulj