我對Python OOP很新,所以我有些困惑。如何將argparse選項包裝到python類中?
目前我有:
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
它工作得很好,但我想新建一個類爲整個我的腳本,使argparse作爲一個類的方法(有沒有可能呢?)。
所以,我想:
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