Ostatnio piszę w pracy sporo skryptów do command-line'owego użycia i denerwowało mnie żmudne deklarowanie argparserów. Napisałem, więc skrypt do generowania argparsera na podstawie docstringa i adnotacji typów funkcji.
Funkcja mi się trochę rozbudowała i pasowałoby połączyć funkcje z danymi jakąś klasą. Jaki interfejs powinna mieć ta klasa?
Czy obiekt per funkcja do przetworzenia to dobry design:
ArgparserGenerator(foo).generate()
ArgparserGenerator(bar).generate()
czy lepszy jest reużywalny obiekt:
argparser_generator = ArgparserGenerator()
argparser_generator.generate(foo)
argparser_generator.generate(bar)
Czy może tworzyć obiekt per funkcje, ale klasę schować w funkcji jako szczegół implementacyjny:
def generate_argparser(func):
return ArgparserGenerator(foo).generate()