我对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