我知道命名空间是什么。但是在运行时
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('bar')
parser.parse_args(['XXX']) # outputs: Namespace(bar='XXX')
Namespace(bar='XXX')
是什么类型的对象?我觉得这完全令人困惑。
阅读 argparse 文档,它说:“大多数 ArgumentParser 操作将某些值作为 parse_args() 返回的对象的属性添加”。那么在运行 globals()
时,这个对象不应该出现吗?或者我该如何对其进行内省?
parse_args
返回的东西。大多数情况下,您只需访问它设置的实例属性。除了一些细节之外,您基本上可以将其定义为class Namespace: pass
。 - chepnerglobals()
中,因为您没有将parser.parse_args
的返回值分配给全局变量。如果您编写args = parser.parse_args(['XXX'])
,那么globals()['args']
就是Namespace
对象。 - chepnerNamespace
类提供的其中一件事情是__repr__
函数,该函数生成漂亮的表示形式。您可以查看 源代码。 (请注意,__repr__
是从_AttributeHolder
继承的,它充当了argparse
中定义的几个类的基类。) - chepner