命名空间,argparse和用法

时间:2011-11-01 15:21:29

标签: python namespaces argparse

这确实是几个问题:

  1. 有没有理由argparse使用命名空间而不是字典?

  2. 假设我有一个__init__(self, init_method, *args)的课程。 init_method参数告诉init_function我想要初始化类的方式,而arg参数给出了init所需的所有参数。对于不同的方法,参数可能不同。我应该使用字典还是命名空间?

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

2 个答案:

答案 0 :(得分:68)

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

>>> vars(args)

答案 1 :(得分:19)

  1. arparse的设计者显然认为访问参数会更方便

    args.arg_name
    

    而不是

    args["arg_name"]
    

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

  2. 使用字典。

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