python找不到自带的argparse_python - Argparse:在'--help'中包含默认值的方法?

博客展示了如何使用argparse模块创建一个自定义的formatter_class,结合ArgumentDefaultsHelpFormatter和RawTextHelpFormatter的功能。通过多重继承,使得帮助消息同时显示默认值和原始文本格式。虽然这不是公共API的一部分,但在实践中可以正常工作。
摘要由CSDN通过智能技术生成

formatter_class + argparse多重继承

多重继承只是起作用,虽然它似乎不是公共API:

#!/usr/bin/env python3

import argparse

import sys

class RawTextArgumentDefaultsHelpFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawTextHelpFormatter): pass

parser = argparse.ArgumentParser(formatter_class=RawTextArgumentDefaultsHelpFormatter)

parser.add_argument('-a', default=13, help="""my help

for a""")

parser.add_argument('-b', default=42, help="""my help

for b""")

parser.print_help()

输出:

usage: a.py [-h] [-a A] [-b B]

optional arguments:

-h, --help show this help message and exit

-a A my help

for a (default: 13)

-b B my help

for b (default: 42)

它只是起作用,因为我们可以从源代码[https://github.com/python/cpython/blob/v3.6.5/Lib/argparse.py#L648]中轻松地看到:

formatter_class实现argparse

formatter_class实现argparse

所以我们可以猜测它们会很好地协同工作。

但是,这似乎不是公共API,也不是formatter_class的方法,因此我认为目前没有公共API方法可以做到这一点。 argparse docstring说:

本模块中的所有其他类都被视为实现细节。   (另请注意,HelpFormatter和RawDescriptionHelpFormatter仅适用于   被视为公共对象名称 - 格式化程序对象的API是   仍然被认为是一个实施细节。)

另请参阅:自定义argparse帮助消息

在Python 3.6.5上测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值