Ho una classe definita come segueCome passare argomento argparse per funzionare come kwargs?
class M(object):
def __init__(self, **kwargs):
...do_something
e ho il risultato di argparse.parse_args()
, ad esempio:
> args = parse_args()
> print args
Namespace(value=5, message='test', message_type='email', extra="blah", param="whatever")
voglio trasmettere i valori di questo spazio dei nomi (ad eccezione message_type
) per creare un'istanza della classe M
. Ho provato
M(args)
ma ottenuto un errore
TypeError: __init__() takes exactly 1 argument (2 given)
che non capisco. Come posso
- rimuovere il valore
message_type
dall'elenco nellaargs
- trasmettere i valori, come se mi digitare
M(value=5, message='test', extra="blah", param="whatever")
direttamente.
Questo è esattamente ciò di cui ho bisogno. Grazie. Tranne per la rimozione di una determinata chiave. Ho bisogno che venga rimosso, non posso ignorarlo per ragioni che esulano dall'ambito di questa domanda. – Alex
Suggerisco di fare 'arg_dict = dict ((k, v) per k, v in vars (args) .items() se k! =" Message_type ")' per evitare possibili comportamenti indefiniti con 'vars'. – Alex
@Alex: quale comportamento indefinito con 'vars'? È possibile filtrare la chiave 'message_type' in questo modo, certo, ma farlo per il proprio interesse, non perché' vars() 'possa avere un comportamento indefinito (che non è così). –