24

这真的是几个问题:

  1. argparse 使用命名空间而不是字典是否有原因?

  2. 假设我有一堂课__init__(self, init_method, *args)init_method参数告诉 init_function 我要以哪种方式初始化类,而参数arg则提供了 init 所需的所有参数。不同方法的参数可能不同。我应该使用字典还是命名空间?

  3. 假设我使用命名空间,如何将命名空间传递给__init__()

4

2 回答 2

69

使用vars()很容易将命名空间转换为字典:

>>> vars(args)
于 2011-11-01T15:44:50.860 回答
19
  1. 的设计者arparse显然认为访问参数会更方便

    args.arg_name
    

    而不是

    args["arg_name"]
    

    不过,这可能是一个品味问题。我会很乐意使用字典,特别是考虑到Namespace标准库中没有类,除了argparse.

  2. 使用字典。

  3. 如果你真的想要一个命名空间,你可以使用init_function(**args.__dict__)……但我不推荐它。

于 2011-11-01T15:27:04.537 回答