Разобрать строку как аргумент datetime.timedelta - PullRequest
0 голосов
/ 17 февраля 2020

Рассмотрим этот метод:

def duration(duration_type, t):
    t = timedelta(duration_type=t)

, где duration_type - строка, представляющая один из timedelta аргументов (days, hours, seconds, et c.)

Есть ли способ правильно проанализировать строку и передать ее в качестве аргумента? Аналогично setattr() при работе с атрибутами.

Очевидно, что приведенный выше код генерирует следующую ошибку:

TypeError: 'duration_type' is an invalid keyword argument for __new__()


Вариант использования: считайте это значение из файла конфигурации python по умолчанию и использовать его в timedelta объекте.

1 Ответ

3 голосов
/ 17 февраля 2020

Вы можете использовать специальный ** (двойная звездочка) для передачи dict в качестве именованных аргументов в функции:

def duration(duration_type, t):
    kwargs = {duration_type: t}
    return timedelta(**kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...