命名空间
是什么,使它比字典更理想。仅仅是因为访问像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)