我正在使用 python 包 argparse, 配置简单
当我尝试添加到我的解析器时
formatter_class=argparse.MetavarTypeHelpFormatter
我收到错误:
AttributeError: 'NoneType' object has no attribute '__name__'
其他人也遇到过这种情况吗?也许知道为什么?
这是我的代码:
import argparse
argParser = argparse.ArgumentParser(
formatter_class=argparse.MetavarTypeHelpFormatter
)
argParser.add_argument("models", default='', nargs='+',
help="Which model(s) to execute")
args = argParser.parse_args()
print(args)
当我在不添加
formatter_class
的情况下尝试它时,它正在工作
它还可以与其他格式化程序类一起使用,例如 formatter_class=argparse.RawDescriptionHelpFormatter
我也尝试过使用
prog
属性和不使用
MetaVarTypeHelpFormatter
需要每个参数都有一个显式类型。
argParser.add_argument("models", default='', nargs='+', type=int,
help="Which model(s) to execute")
其记录的目的是使用参数的
type
属性的名称作为元变量,并且该属性默认为 None
。
虽然参数的默认类型是
str
,但这仅意味着如果参数的 str
属性是 type
,则保留从参数列表中获取的 None
值,如果不是,则转换为给定类型None
。
>>> p = argparse.ArgumentParser()
>>> print(p.add_argument("foo").type)
None
>>> print(p.add_argument("foo", type=int).type)
<class 'int'>