저는 OOP에 익숙하지 않아 혼란 스럽습니다. 파이썬 클래스에 argparse 옵션을 어떻게 포장합니까?
현재 내가 가진 : 꽤 잘 작동하지만 내 스크립트의 전체에 대한 클래스를 생성하고 클래스의 방법으로 argparse하기 위해 완parser = argparse.ArgumentParser(description='script 1.0')
parser.add_argument('-a', '--foo', help='specify foo')
parser.add_argument('-b', '--bar', type=int, help='specify bar')
parser.add_argument('-c', '--baz', help='specify baz')
parser.add_argument('-d', '--bar2', help='bar2')
args = parser.parse_args()
foo = args.foo
bar = args.bar
baz = args.baz
bar2 = args.bar2
(전혀 가능합니까?).
그래서 나는 시도 : import argparse
....
Class Program:
def __init__(self, foo, bar, baz, bar2):
self.foo = foo
self.bar = bar
...(so on for each arg)
def main():
parser = argparse.ArgumentParser(description='script 1.0')
parser.add_argument('-a', '--foo', help='specify foo')
parser.add_argument('-b', '--bar', type=int, help='specify bar')
parser.add_argument('-c', '--baz', help='specify baz')
parser.add_argument('-d', '--bar2', help='bar2')
args = parser.parse_args()
foo = self.foo
bar = self.bar
baz = self.baz
bar2 = self.bar2
내가 비록, 바로 일을하고 있다고 생각하지 않습니다. 나는 그것에 대해 너무 많은 정보를 찾지 못했지만 상황을 명확하게하지 않은 SO에 대한 하나의 게시물은 특정 사례에 대한 의견을 갖고 싶습니다.
옳은 길에있는 것처럼 보입니다. 실제로 어떤 문제가 있습니까? – ZdaR
@ZdaR, argparse 옵션이 추가 사용을 위해 기억되지 않아서, 다음과 같이 클래스를 intianalize해서는 안됩니다 : __init __ (self, --foo, --bar, -baz, --bar2) –
나는 우려의 명확한 분리를 갖는 것이 최선이라고 생각한다. 즉, 비즈니스 로직 (프로그램 클래스)에서 CLI 입력을 분리하십시오. 이렇게하려면 스크립트가 직접 실행될 때만 argparse를 사용합니다. 즉,'if __name__ == __main__' 섹션 아래. 그런 다음 argparse가 작업을 완료하면 파싱 된 인수를 전달하는 클래스 인스턴스를 만들고 논리를 실행합니다. – monkut