这真的是几个问题:
argparse 使用命名空间而不是字典是否有原因?
假设我有一堂课
__init__(self, init_method, *args)
。init_method
参数告诉 init_function 我要以哪种方式初始化类,而参数arg
则提供了 init 所需的所有参数。不同方法的参数可能不同。我应该使用字典还是命名空间?假设我使用命名空间,如何将命名空间传递给
__init__()
?
这真的是几个问题:
argparse 使用命名空间而不是字典是否有原因?
假设我有一堂课__init__(self, init_method, *args)
。init_method
参数告诉 init_function 我要以哪种方式初始化类,而参数arg
则提供了 init 所需的所有参数。不同方法的参数可能不同。我应该使用字典还是命名空间?
假设我使用命名空间,如何将命名空间传递给__init__()
?
使用vars()很容易将命名空间转换为字典:
>>> vars(args)
的设计者arparse
显然认为访问参数会更方便
args.arg_name
而不是
args["arg_name"]
不过,这可能是一个品味问题。我会很乐意使用字典,特别是考虑到Namespace
标准库中没有类,除了argparse
.
使用字典。
如果你真的想要一个命名空间,你可以使用init_function(**args.__dict__)
……但我不推荐它。