Ответ 1
Вместо vars(args)
вы должны передать результат:
M(**vars(args))
Внутри M.__init__()
просто игнорируйте клавишу message_type
.
У меня есть класс, определяемый следующим образом
class M(object):
def __init__(self, **kwargs):
...do_something
и я получил результат argparse.parse_args()
, например:
> args = parse_args()
> print args
Namespace(value=5, message='test', message_type='email', extra="blah", param="whatever")
Я хочу передать значения этого пространства имен (кроме message_type
), чтобы создать экземпляр класса M
. Я пробовал
M(args)
но получил ошибку
TypeError: __init__() takes exactly 1 argument (2 given)
который я не понимаю. Как я могу
message_type
из списка в args
M(value=5, message='test', extra="blah", param="whatever")
напрямую.Вместо vars(args)
вы должны передать результат:
M(**vars(args))
Внутри M.__init__()
просто игнорируйте клавишу message_type
.