使用argparse出现Expected type '_ActionsContainer', got 'str'错误求助
解决argparse中
AttributeError: 'str' object has no attribute 'prefix_chars'错误 你遇到的错误根源非常明确:所有测试代码里,parser = argparse.ArgumentParser这一行缺少了括号,没有创建ArgumentParser类的实例,而是把类本身赋值给了parser变量。
当你调用parser.add_argument()时,Python会把第一个传入的字符串参数(比如'-shortarg')当作方法的self参数(原本应该是ArgumentParser实例)传入。此时self变成了字符串对象,而字符串没有prefix_chars属性,自然触发AttributeError。你尝试调整参数顺序、添加位置参数这些操作,都没触及根本问题,所以错误始终存在。
正确代码示例
import argparse # 加括号创建ArgumentParser实例 parser = argparse.ArgumentParser() # 正常添加参数,注意type应该是具体类型(比如str、int),不是type本身 parser.add_argument('-shortarg', '--longarg', type=str, help="帮助文本") # 必须调用parse_args()完成参数解析 args = parser.parse_args()
额外提示
- 不要用
type=type,这会让用户输入的内容被解析为类型对象,通常你需要的是str、int这类具体类型。 - 调用
add_argument前,一定要确保parser是ArgumentParser的实例(即加括号初始化)。
内容的提问来源于stack exchange,提问作者Caleb Birtwistle
相关产品推荐
相关产品推荐

