Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/python
- import argparse
- class MutuallyExclusiveParameter(argparse.Action):
- def __init__(self, option, **kwargs):
- # print('init', repr(option), repr(kwargs))
- self.option = option
- super().__init__(**kwargs)
- def __call__(self, parser, namespace, values, option_string=None):
- # print('call', repr(values), repr(option_string))
- setattr(namespace, self.option, True)
- setattr(namespace, self.dest, values)
- parser = argparse.ArgumentParser(description='Play with options.',
- formatter_class=argparse.ArgumentDefaultsHelpFormatter)
- group = parser.add_mutually_exclusive_group()
- group.add_argument('-a', dest='num', default=1, type=int,
- action=lambda **kwargs: MutuallyExclusiveParameter('a', **kwargs),
- help='help a')
- group.add_argument('-b', dest='num', default=2, type=int,
- action=lambda **kwargs: MutuallyExclusiveParameter('b', **kwargs),
- help='help b')
- def p(l):
- print(repr(parser.parse_args(l)))
- p([])
- p(['-a', '11'])
- p(['-b', '22'])
- try:
- p(['-h'])
- except:
- pass
- p(['-a111', '-b222'])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement