いいえ、醜いハックなしではありません。
@Vladimirが投稿したコードスニペットは、あなたが探しているものではないと思います。これを実行している実際のコードは次のとおりです。
def _get_option_tuples(self, option_string):
...
if option_string.startswith(option_prefix):
...
チェックがstartswith
ないことを参照してください==
。
そして、いつでも拡張して、この動作を変更argparse.ArgumentParser
するための独自の機能を提供できます。toと:_get_option_tuples(self, option_string)
の2つのオカレンスを置き換えるだけです。option_string.startswith(option_prefix)
option_string == option_prefix
>>> parser = my_argparse.MyArgparse
>>> parser = my_argparse.MyArgparse()
>>> parser.add_argument('--send', action='store_true')
_StoreTrueAction(option_strings=['--send'], dest='send', nargs=0, const=True, default=False, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args(['--se'])
usage: [-h] [--send]
: error: unrecognized arguments: --se
注意の言葉
メソッドの前には、_get_option_tuples
が付いて_
います。これは通常、Pythonのプライベートメソッドを意味します。また、プライベートをオーバーライドすることはお勧めできません。