如何将argparse参数传递给kwargs?

时间:2013-03-04 16:16:50

标签: python python-2.7 arguments argparse

我有一个如下定义的类

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)

我不明白。我怎么能

  1. message_type
  2. 的列表中删除值args
  3. 传递值,就像我直接输入M(value=5, message='test', extra="blah", param="whatever")一样。

1 个答案:

答案 0 :(得分:38)

您需要传递vars(args)的结果:

M(**vars(args))

vars() function将Namespace实例的名称空间(其__dict__属性)作为字典返回。

M.__init__()内,只需忽略message_type键。