Reputation: 1140
This is really a few questions:
Is there a reason argparse uses a namespace instead of a dictionary?
Assuming I have a class with __init__(self, init_method, *args)
. The init_method
parameter tells the init_function which way I want to initialize the class, while arg
parameter gives all the arguments neccesary for the init. The arguments may be different for different methods. Should I use a dictionary, or a namespace?
Assuming that I use a namespace, how do I pass the namespace to __init__()
?
Upvotes: 23
Views: 10499
Reputation: 601489
The designers of arparse
apparently felt it would be more convenient to access arguments as
args.arg_name
rather than
args["arg_name"]
This might be a matter of taste, though. I would have happily gone with the dictionary, especially given the fact that there is no Namespace
class in the standard library, except for the one in argparse
.
Use a dictionary.
If you really want a namespace here, you can use init_function(**args.__dict__)
…but I don't recommend it.
Upvotes: 20
Reputation: 226231
It is easy to convert a Namespace into a dictionary using vars():
>>> vars(args)
Upvotes: 68