2015-12-22 3 views
-2

Мне нужно иметь дело со многими аргументами/опциями. Я думаю, до 30-40 +.Как бороться со многими аргументами в Python?

Я использую argparse (Python 3.5), чтобы люди задавали аргументы/параметры из командной строки и в if __name__ == "__main__":, я передаю все аргументы: MyClass(arg1, arg2, arg3,...).

Есть ли лучший способ, более элегантный способ сделать это?

+1

Если у вас есть много вариантов командной строки, рассмотрите возможность использования [docopt] (http://docopt.org/) –

+0

Если ваша функция/класс принимает ключевые слова args, то 'args' from' parse_args' может быть передан как 'MyClass (** vars (args)'. – hpaulj

+0

'ipython' строит свой' argparse' из значений в файлах 'config'. Таким образом, пользователи могут указывать значения в конфигурации по умолчанию, пользовательской конфигурации и командной строке. Но' ipython' длительное время разработки. 'argparse' также имеет простой механизм для чтения строк из файла - см. его документы. – hpaulj

ответ

2

Вместо того, чтобы передавать множество аргументов вашему классу, просто передайте весь результат parse_args() от argparse. Тогда это всего лишь одно значение, которое содержит все, что вам нужно.

+0

Это хорошая идея. Я попробую, но я открыт для большего количества предложений :) – Oli