如何将argparse参数传递给kwargs? [英] How to pass on argparse argument to function as kwargs?

查看:64
本文介绍了如何将argparse参数传递给kwargs?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个定义如下的类

class M(object):
    def __init__(self, **kwargs):
        ...do_something

,我得到的结果是argparse.parse_args(),例如:

and I have the result of argparse.parse_args(), for example:

> args = parse_args()
> print args
Namespace(value=5, message='test', message_type='email', extra="blah", param="whatever")

我想传递此命名空间的值(message_type除外)以创建类M的实例.我尝试过

I want to pass on the values of this namespace (except message_type) to create an instance of the class M. I have tried

M(args)

但出现错误

TypeError: __init__() takes exactly 1 argument (2 given)

我不明白.

  1. args
  2. 中的列表中删除值message_type
  3. 传递值,就像我直接键入M(value=5, message='test', extra="blah", param="whatever")一样.
  1. remove the value message_type from the list in args
  2. pass on the values as if I would type M(value=5, message='test', extra="blah", param="whatever") directly.

推荐答案

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

M(**vars(args))

vars()函数返回命名空间的名称空间实例(其__dict__属性)作为字典.

The vars() function returns the namespace of the Namespace instance (its __dict__ attribute) as a dictionary.

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

这篇关于如何将argparse参数传递给kwargs?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆