假设我args
在用 argparse 解析命令行后有一个命名空间。现在,我想用它来创建一些像这样的对象:
foo = Foo(bar=args.bar)
不幸的是,我有一个限制,即如果设置了关键字参数,则不能是None
. 现在,我需要检查是否args.bar
已设置并采取相应措施:
if args.bar:
foo = Foo(bar=args.bar)
else:
foo = Foo()
这是笨拙的,并且不能扩展到更多的论点。我想要的是这样的:
foo = Foo(**args.__dict__)
但这仍然受到我最初的问题的影响,并且对于不是方法的关键字参数的键也不起作用__init__
。有没有很好的方法来实现这些事情?