40

次のように定義されたクラスがあります

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のリストから値を削除しますargs
  2. 直接入力するかのように値を渡しますM(value=5, message='test', extra="blah", param="whatever")
4

1 に答える 1

60

vars(args)代わりに次の結果を渡す必要があります。

M(**vars(args))

このvars()関数は、Namespace インスタンス (その__dict__属性) の名前空間を辞書として返します。

内部M.__init__()では、単にキーを無視しmessage_typeます。

于 2013-03-04T16:19:09.000 に答える