Mam klasy zdefiniowane następującoJak przekazać argument argparse do funkcji kwargs?
class M(object):
def __init__(self, **kwargs):
...do_something
i mam wynik argparse.parse_args()
, na przykład:
> args = parse_args()
> print args
Namespace(value=5, message='test', message_type='email', extra="blah", param="whatever")
Chcę przekazać na wartościach tej przestrzeni nazw (z wyjątkiem message_type
), aby utworzyć instancja klasy M
. Próbowałem
M(args)
ale masz błąd
TypeError: __init__() takes exactly 1 argument (2 given)
których ja nie rozumiem. Jak mogę
- usunąć wartość
message_type
z listy wargs
- przejściu na wartościach jak gdybym wpisać
M(value=5, message='test', extra="blah", param="whatever")
bezpośrednio.
To jest dokładnie to, czego potrzebuję. Dzięki. Z wyjątkiem usunięcia określonego klucza. Potrzebuję go do usunięcia, nie mogę po prostu zignorować go z powodów wykraczających poza zakres tego pytania. – Alex
Proponuję zrobić 'arg_dict = dict ((k, v) dla k, v w vars (args) .items(), jeśli k! =" Message_type ")', aby uniknąć możliwego niezdefiniowanego zachowania z 'vars'. – Alex
@Alex: jakie niezdefiniowane zachowanie z 'vars'? Możesz odfiltrować w ten sposób klucz 'message_type', oczywiście, ale rób to dla niego samego, nie dlatego, że' vars() 'może mieć niezdefiniowane zachowanie (którego nie ma). –