为什么 ArgumentParser 返回命名空间而不是字典


命名空间

是什么,使它比字典更理想。仅仅是因为访问像foo.bar这样的值看起来比foo['bar']更好吗?不可能。我觉得我一定错过了什么。

我怀疑原因是灵活性。支持属性赋值的类比需要 __getitem____setitem__ 的类更通用。

注意argparse.Namespace只是返回值parse_args的默认类;你可以通过namespace关键字参数提供自己的类。

p = ArgumentParser()
# add options
class MyNamespace:
    pass
class MyDictNamespace:
    # Provide __getitem__ and __setitem__ wrappers around getattr and setattr
    ...
p1 = p.parse_args()  # Use the default Namespace class
p2 = p.parse_args(namespace=MyNamespace)
p3 = p.parse_args(namespace=MyDictNamespace)

最新更新