Ale*_*lex 27 python arguments python-2.7 argparse
我有一个类定义如下
class M(object):
def __init__(self, **kwargs):
...do_something
Run Code Online (Sandbox Code Playgroud)
我有结果argparse.parse_args(),例如:
> args = parse_args()
> print args
Namespace(value=5, message='test', message_type='email', extra="blah", param="whatever")
Run Code Online (Sandbox Code Playgroud)
我想传递此命名空间的值(除外message_type)以创建该类的实例M.我试过了
M(args)
Run Code Online (Sandbox Code Playgroud)
但是得到了一个错误
TypeError: __init__() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)
我不明白.我怎么能够
message_type从中删除列表中的值argsM(value=5, message='test', extra="blah", param="whatever")直接输入一样.Mar*_*ers 39
你需要传递结果vars(args):
M(**vars(args))
Run Code Online (Sandbox Code Playgroud)
该vars()函数将Namespace实例的名称空间(其__dict__属性)作为字典返回.
在里面M.__init__(),只需忽略message_type键.