파이썬 argparse ArgumentParser 클래스에서 파생 된 파서 클래스를 작성하려고합니다. 다음 코드의 개요는 명령 행에서 제대로 작동하지만 오류가 발생하여 모듈의 컨텍스트에서 이해하기가 어려워졌습니다.argparse 하위 클래스 인수 파서
class SansParser(argparse.ArgumentParser):
"""Argument parser for preparing a SansModel fit or calculation
"""
def __init__(self):
"""Initialisation method for the parser class"""
argparse.ArgumentParser.__init__(self)
# Subparsers for the two commands 'calc' and 'fit'
self.subparsers = self.add_subparsers()
self.fit_parser = self.subparsers.add_parser('fit', help="Fit a dataset")
self.fit_parser.add_argument('-d', '-data', '-dataset', type = str,
dest = 'dataset',
help = "The dataset to fit in SasXML format")
self.fit_parser.set_defaults(func=fit)
self.calc_parser = self.subparsers.add_parser('calc', prog='test')
self.calc_parser.set_defaults(func=calculate)
내가 스크립트와 훌륭한 등이 동등한를 실행할 수 있습니다 : 다음과 같이
(중요하지 않은 물건을 제거 조금 벗었) 코드입니다. 내가 파이썬 명령 줄에 쉘 또는 수입 중 하나에서 실행하고 클래스를 인스턴스화하려고하면 내가 얻을 :
$ python sansmodel.py
Traceback (most recent call last):
File "sansmodel.py", line 57, in <module>
parser = SansParser()
File "sansmodel.py", line 41, in __init__
self.fit_parser = self.subparsers.add_parser('fit', help="Fit a dataset")
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/argparse.py",
line 1064, in add_parser
parser = self._parser_class(**kwargs)
TypeError: __init__() got an unexpected keyword argument 'prog'
를 지금까지 내가 1064 명시 적으로 '음식물'키워드를 만들어 줄에서 argparse 자체의 코드를 말할 수있는 이것은 예상 된 행동이므로 예기치 않은 부분에 대해서는 혼란 스럽습니다. 어떻게 든 범위가 거꾸로 된 것 같아요?
예. 나는 그 문제에 대해 단지 생각하고 있다고 확신했다. 이제는 파서를 객체로 사용하는 app 클래스를 만드는 것이 더 합리적이라고 생각합니다. 왜냐하면 말하자면,이 메서드 중 하나를 덮어 쓸 필요가 없기 때문입니다. –