19
class M(object):
def __init__(self, **kwargs):
...do_something
を次のように私はクラスが定義されていると私は例えば、argparse.parse_args()
の結果を持っている:
message_type
を除く)この名前空間の値を渡したい
> args = parse_args()
> print args
Namespace(value=5, message='test', message_type='email', extra="blah", param="whatever")
作成しますクラスM
のインスタンスです。私は
M(args)
を試してみましたが、私は理解していないエラー
TypeError: __init__() takes exactly 1 argument (2 given)
を持っています。私は直接M(value=5, message='test', extra="blah", param="whatever")
を入力しているかのようにはどうすれば
- 値に
args
- パスのリストから値
message_type
を削除することができます。M(**vars(args))
vars()
functionは辞書として名前空間のインスタンス(その__dict__
属性)の名前空間を返します。あなたが代わりにvars(args)
の結果に渡す必要が
私が必要としているものとまったく同じです。ありがとう。特定のキーの削除を除いて。私はそれを削除する必要がある、私はこの質問の範囲外の理由でそれを無視することはできません。 – Alex
'vars'で未定義の動作が起こらないように、' arg_dict = dict(k、v)for k、vars(args).items()if k!= "message_type") 'を実行することをお勧めします。 – Alex
@Alex: 'vars'で何が未定義の動作ですか?あなたは 'message_type'キーをそのようにフィルターすることができますが、' vars() 'が未定義の動作をしているわけではありません。 –