一个模块(我们称其为A
)实现了一个“主要” argparse解析器,该解析器解析所有子类(使用parser.parse_known_args(argv)
)通用的已知参数。然后,它将剩余的参数传递给它正在调用的另一个对象。假设它可能是类B
或C
的对象。 B
和C
都有自己的argparse解析器,用于解析其余参数(使用parser.parse_args(argv)
)。它们采用不同的参数,特定于类B
或C
。
类A
中的示例片段:
parser = argparse.ArgumentParser(
description="Parent parser",
formatter_class=argparse.RawTextHelpFormatter,
allow_abbrev=False
)
parser.add_argument('--argument_A', action="append", default=None,
help="Help of first argument of parser A")
known, remaining_args = parser.parse_known_args(argv)
my_obj = self.create_obj(b_or_c, remaining_args)
类B
中的示例片段:
parser = argparse.ArgumentParser(
description="Class B parser",
formatter_class=argparse.RawTextHelpFormatter,
allow_abbrev=False
)
parser.add_argument('--argument_B', action="append", default=None,
help="Help of first argument of parser B")
B_arguments_parsed = parser.parse_args(argv)
类C
中的示例片段:
parser = argparse.ArgumentParser(
description="Class C parser",
formatter_class=argparse.RawTextHelpFormatter,
allow_abbrev=False
)
parser.add_argument('--argument_C', action="append", default=None,
help="Help of first argument of parser C")
C_arguments_parsed = parser.parse_args(argv)
虽然实现传递参数并在正确的位置进行解析很容易,但是我没有找到打印适当帮助的简单解决方案。
如何实现帮助消息,以便我的父解析器(来自类A
)打印自己的帮助以及来自解析器B
或C
的帮助?
我希望看到来自解析器A
的帮助消息,以及解析器B
或C
的依赖,这取决于选择的对象。