여러 스크립트에 일반 파서를 사용하고 싶습니다. 따라서 코드 정리를 위해 모든 공통 인수를 처리 할 수있는 장소를 하나 갖고 싶습니다. ArgumentParser를 하위 클래스 화하여이 작업을 수행 할 수 있지만 그룹을 추가하는 문제가 발생했습니다. 그룹을 추가하면 더 이상 내가 작성한 사용자 정의 메소드에 액세스 할 수 없습니다. 이 문제를 해결하기 위해 기본적으로 add_argument_group 메소드를 복사하고 추가 기능을 추가했습니다. 나는 이것이 끔찍한 해결책이라는 것을 잘 알고 있으며, 이것을 올바르게 달성하는 방법에 대한 조언은 무엇입니까?argparse 및 overriding add_argument_group
class CustomParser(argparse.ArgumentParser):
def __init__(self, *args, **kwrds):
super(CustomParser, self).__init__(*args, **kwrds)
def add_enzyme(self):
self.add_argument('--enzyme', help="The enzyme to cleave with. Also valid is a"
" cleavage pattern such as [KR]|{P}.",
choices=protein_config.ENZYMES.keys(), type=str, default='trypsin')
def add_fasta(self, help="The fasta file to operate on."):
self.add_argument('-f', '--fasta', nargs='?', help=help, type=argparse.FileType('r'), default=sys.stdin)
def add_out(self, help='The file to write results to. Leave blank for stdout,'):
self.add_argument('-o', '--out', nargs='?', help=help, type=argparse.FileType('w'), default=sys.stdout)
def add_argument_group(self, *args, **kwargs):
group = argparse._ArgumentGroup(self, *args, **kwargs)
self._action_groups.append(group)
group.add_enzyme = self.add_enzyme
group.add_fasta = self.add_fasta
group.add_out = self.add_out
return group
만 (add_argument_group에서) 그룹에 연결된 사용자의 세 가지 추가 방법이며 CustomParser에서 사용되지 생산? – deinonychusaur