为依赖于python argparse中另一个可选参数的可选参数设置默认值

为依赖于python argparse中另一个可选参数的可选参数设置默认值,python,default,argparse,Python,Default,Argparse,我正在使用pythonargparse()进行命令行解析。我想要这样的东西 -可选参数 -b->取决于a和默认值x的可选参数 条件:-b当且仅当设置了a时,才应设置(默认值或自定义值),否则b应设置为None 有人能帮我做到这一点吗?@hpaulj的评论仍然有效。这最好在解析后的代码中完成 但是您可以使用@属性和您自己的MyNamespace对象而不是默认的argparse名称空间来完成 @property允许您为特定类对象(在本例中为b)的getter/setter编写任意代码 当a和b都通过

我正在使用python
argparse()
进行命令行解析。我想要这样的东西

-可选参数

-b
->取决于
a
默认值x的可选参数

条件
-b
当且仅当设置了
a
时,才应设置(默认值或自定义值),否则
b
应设置为
None


有人能帮我做到这一点吗?

@hpaulj
的评论仍然有效。这最好在解析后的代码中完成

但是您可以使用
@属性
和您自己的
MyNamespace
对象而不是默认的argparse名称空间来完成

@property允许您为特定类对象(在本例中为b)的getter/setter编写任意代码

当a和b都通过时(以任何顺序) 当只有-b通过时
$>python testparse.py -b BTEST 
None BTEST
当仅通过-a时
$>python testparse.py -a atest
atest A_IS_SET
当他们都没有通过的时候
$>python testparse.py
None None

希望这有帮助

@hpaulj
的评论仍然有效。这最好在解析后的代码中完成

但是您可以使用
@属性
和您自己的
MyNamespace
对象而不是默认的argparse名称空间来完成

@property允许您为特定类对象(在本例中为b)的getter/setter编写任意代码

当a和b都通过时(以任何顺序) 当只有-b通过时
$>python testparse.py -b BTEST 
None BTEST
当仅通过-a时
$>python testparse.py -a atest
atest A_IS_SET
当他们都没有通过的时候
$>python testparse.py
None None

希望这有帮助

这最好在解析后完成。谢谢@hpaulj。我们不能在解析之前做吗?我们在add_argument()中有任何参数吗?有一个
default
参数,您可以在解析之前随时设置它。但是,在解析过程中尝试更改默认值比在解析之后进行一些简单测试要多得多。这最好在解析之后进行。谢谢@hpaulj。我们不能在解析之前做吗?我们在add_argument()中有任何参数吗?有一个
default
参数,您可以在解析之前随时设置它。但是,在解析过程中尝试更改默认值要比在解析后执行一些简单的测试多得多。