Mam pewną zagwozdkę z obsługą parametrów linii poleceń z wykorzystaniem argparse. Poniższe to uproszczony fragment:
parser = argparse.ArgumentParser()
parser.add_argument('-a','--action', help='Execute specific use case',
choices=['case1','case2','case3'],
default='case1',
dest='action')
Gdzieś tam dalej w kodzie zdefiniowana jest logika danej komendy/przypadku użycia:
def case1():
...
Mam więc parametr, przez który przekazywane są nazwy funkcji i argparse pilnuje by były przekazywane tylko dozwolone nazwy.
Mogę sobie napisać generyczny kawałek kodu + słownik mapujący nazwę funkcji na funkcję i to działa:
command= COMMNADS_MAP[args.action]
command()
Czy da się to zrealizować inaczej, bez konieczności utrzymywania słownika? Może jakaś ciekawa funkcjonalność argparse, o której nie wiem?
--edited:
Pewnie mógłbym sklecić coś na zasadzie:
locals()[args.action]()
Tylko czy to mieści się w pythonowych dobrych praktykach?