我对模块arparse的组织有一点疑问 以下代码可在python在线文档中找到
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)
我假设argparse将是模块 argparse.ArgumentParser()将是模块中的类,因此第2行只是创建该类的对象。下一行我们使用点运算符调用类中定义的方法。直到这一点都有意义。我在想args将是简单的变量但是当使用点运算符访问args.echo时,args是什么类型的?是parser.parse_args()返回ArgmentParser()类型的对象。 如果问题太天真,请道歉。
答案 0 :(得分:0)
https://docs.python.org/3/library/argparse.html#the-namespace-object
类argparse.Namespace
parse_args()默认使用的简单类,用于创建一个包含属性的对象并将其返回。
尝试在您的发行版中找到argparse.py
文件,并查看它,最好使用解析Python的编辑器。几乎所有的代码都是类。有几个实用程序基类(容器等),但关键的是使用__all__
列表导入的。
在交互式进程中运行代码并查看创建的对象也很有启发性。或者只需添加大量print(parser)
语句即可查看各自的str
。
parser = argparse.ArgumentParser()
创建一个ArgumentParser
对象。
a = parser.add_argument("echo")
根据Action
参数创建Action
对象(实际上是action
的子类。
args = parser.parse_args()
创建一个Namespace
对象,
vars(args)
从args
属性创建字典对象。