这真的是几个问题:
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__)……但我不推荐它。