我有一个如下定义的类
class M(object):
def __init__(self, **kwargs):
...do_something
我的结果为argparse.parse_args()
,例如:
> args = parse_args()
> print args
Namespace(value=5, message='test', message_type='email', extra="blah", param="whatever")
我想传递此命名空间的值(message_type
除外)以创建类M
的实例。我试过了
M(args)
但收到错误
TypeError: __init__() takes exactly 1 argument (2 given)
我不明白。我怎么能
message_type
args
M(value=5, message='test', extra="blah", param="whatever")
一样。答案 0 :(得分:38)
您需要传递vars(args)
的结果:
M(**vars(args))
vars()
function将Namespace实例的名称空间(其__dict__
属性)作为字典返回。
在M.__init__()
内,只需忽略message_type
键。