问题:从现有argparse.ArgumentParser对象访问可能的参数的预期/官方方式是什么?
示例:我们假设以下上下文:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', '-f', type=str)
Run Code Online (Sandbox Code Playgroud)
在这里,我想获得以下允许参数列表:
['-h', '--foo', '--help', '-f']
Run Code Online (Sandbox Code Playgroud)
我找到了以下解决方法,它为我提供了诀窍
parser._option_string_actions.keys()
Run Code Online (Sandbox Code Playgroud)
但我对此并不满意,因为它涉及访问_未正式记录的成员.什么是这项任务的正确选择?
我正在尝试使用 mypy 来检查我的程序。该程序使用 argparse 来解析命令行参数。我想为命令行参数添加类型提示。
import argparse
import typing
# define example types and a function that uses them
Seconds = typing.NewType("Seconds", float)
Minutes = typing.NewType("Minutes", float)
def sec_to_min(s: Seconds) -> Minutes:
return Minutes(s / 60)
# specify arguments and parse them
parser = argparse.ArgumentParser()
parser.add_argument("-t", "--time", default=1., type=float,
help="time in seconds")
args = parser.parse_args()
try:
# mypy reveals type Any
reveal_type(args.time)
except NameError:
pass
# (1) passes type check
seconds: Seconds = args.time
# (2) passes type check
sec_to_min(args.time) …Run Code Online (Sandbox Code Playgroud) 在C++中我会写:
namespace LowerLevel{
int DoStuff() {}; //
}
Run Code Online (Sandbox Code Playgroud)
并通过以下方式访问:
LowerLevel::DoStuff()
Run Code Online (Sandbox Code Playgroud)
我如何在Python中执行这两项操作?