如何查看 argparse.NameSpace Python 对象的属性?

Posted

技术标签:

【中文标题】如何查看 argparse.NameSpace Python 对象的属性?【英文标题】:How to see the attributes of argparse.NameSpace Python object? 【发布时间】:2021-12-27 02:43:41 【问题描述】:

对于涉及多个脚本(数据处理、模型调整、模型训练、测试等)的项目,我可以将我的所有 <class 'argparse.ArgumentParser'> 对象保留为我命名为 @987654322 的模块中每个脚本任务的函数的返回值@。但是,在调用脚本本身 (__main__) 中,在调用 args = parser.parse_args() 之后,如果我在 VS Code 中键入 args.,我不会得到特定于该对象的建议属性。 如何在 VS Code 中获取 argparse.NameSpace 对象的建议属性?

例如,

"""Module for command line interface for different scripts."""
import argparse
def some_task_parser(description: str) -> argparse.ArgumentParser:
  parser = argparse.ArgumentParser(description=description)
  parser.add_argument('some_arg')
  return parser

然后

"""Script for executing some task."""
from cli import some_task_parser
if __name__ == '__main__':
  parser = some_task_parser('arbitrary task')
  args = parser.parse_args()
  print(args.)  # I WANT SUGGESTED ATTRIBUTES (SUCH AS args.some_arg) TO POP UP!!

【问题讨论】:

由于您的问题似乎是专门针对您的 IDE 的行为,因此我添加了相应的标签。 args 命名空间是一个 python 对象。它不是method,因此没有定义的参数。它有属性。 我已更正我的问题,改为使用 term 属性。 【参考方案1】:

我不了解 VSCode,在 ipython 会话中,选项卡完成确实显示了 Namespace 的可用属性。 argparse.Namespace 是一个比较简单的对象类。我想你想要的只是这个对象的attributes

In [238]: args = argparse.Namespace(test='one', foo='three', bar=3)
In [239]: args
Out[239]: Namespace(bar=3, foo='three', test='one')
In [240]: args.
                bar      test    
                foo      args.txt

但是这些属性在开发过程中将不可用。它们在运行时通过解析操作放在那里。它们不能从parser 设置中可靠地推断出来。当然argparse 不会提供这样的帮助。

我经常建议开发人员包含一个

print(args)

在调试阶段,他们可以清楚地了解解析器的作用。

【讨论】:

这是有道理的。我希望能够在运行时执行之前看到属性,但如果我不能,那也没什么大不了的。

以上是关于如何查看 argparse.NameSpace Python 对象的属性?的主要内容,如果未能解决你的问题,请参考以下文章

类定义中的 Python argparse 命名空间

vs2010如何查看动态数组的值,比如,int *p=new int[5],值为1到5,我添加监视

如何实时查看mysql当前连接数?

如何实时查看mysql当前连接数

如何查询mysql当前的连接数

Python asyncio.subprocess():如何查看它是不是还在运行