Подтвердить что ты не робот

Пространство имен, argparse и использование

Это действительно несколько вопросов:

  • Есть ли причина, по которой argparse использует пространство имен вместо словаря?

  • Предполагая, что у меня есть класс с __init__(self, init_method, *args). Параметр init_method сообщает init_function, каким способом я хочу инициализировать класс, а параметр arg дает все аргументы, необходимые для init. Аргументы могут быть разными для разных методов. Должен ли я использовать словарь или пространство имен?

  • Предполагая, что я использую пространство имен, как передать пространство имен в __init__()?

4b9b3361

Ответ 1

  • Дизайнеры arparse, по-видимому, чувствовали, что было бы удобнее обращаться к аргументам как

    args.arg_name
    

    а не

    args["arg_name"]
    

    Это может быть вопросом вкуса. Я бы с удовольствием пошел со словарем, особенно учитывая тот факт, что в стандартной библиотеке нет класса Namespace, кроме одного в argparse.

  • Используйте словарь.

  • Если вам действительно нужно пространство имен здесь, вы можете использовать init_function(**args.__dict__)... но я не рекомендую его.

Ответ 2

Легко преобразовать пространство имен в словарь, используя vars():

>>> vars(args)