Пространство имен, argparse и использование
Это действительно несколько вопросов:
-
Есть ли причина, по которой argparse использует пространство имен вместо словаря?
-
Предполагая, что у меня есть класс с __init__(self, init_method, *args)
. Параметр init_method
сообщает init_function, каким способом я хочу инициализировать класс, а параметр arg
дает все аргументы, необходимые для init. Аргументы могут быть разными для разных методов. Должен ли я использовать словарь или пространство имен?
-
Предполагая, что я использую пространство имен, как передать пространство имен в __init__()
?
Ответы
Ответ 1
-
Дизайнеры arparse
, по-видимому, чувствовали, что было бы удобнее обращаться к аргументам как
args.arg_name
а не
args["arg_name"]
Это может быть вопросом вкуса. Я бы с удовольствием пошел со словарем, особенно учитывая тот факт, что в стандартной библиотеке нет класса Namespace
, кроме одного в argparse
.
-
Используйте словарь.
-
Если вам действительно нужно пространство имен здесь, вы можете использовать init_function(**args.__dict__)
... но я не рекомендую его.
Ответ 2
Легко преобразовать пространство имен в словарь, используя vars():
>>> vars(args)