우리는 이미 인수 그룹을 정의했다고 가정 해 봅시다. 이제 추가 인수를 추가하기 위해 그 중 하나에 액세스하려고합니다. 그래서 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
'보호 된'회원에 직접 액세스하지 못하게하는 더 세련된 방법이 있습니까?
아니요, 이러한 그룹의 '보호되지 않은'목록은 없습니다. 파이썬에서 이와 같은 속성 이름을 사용한다는 것은 "임시 사용자가 필요하지는 않다"는 것을 의미하지만, 지식이있는 사용자는이를 사용하는 것이 금지되어 있지 않습니다. '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- 알파벳순. – hpaulj