命名空间,argparse和用法

use*_*2pi 23 python namespaces argparse

这真的是几个问题:

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

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

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

Ray*_*ger 68

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

>>> vars(args)
Run Code Online (Sandbox Code Playgroud)


Sve*_*ach 19

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

    args.arg_name
    
    Run Code Online (Sandbox Code Playgroud)

    而不是

    args["arg_name"]
    
    Run Code Online (Sandbox Code Playgroud)

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

  2. 使用字典.

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