#python-3.5 #mypy #type-hinting
#python-3.5 #mypy #подсказка типа
Вопрос:
Рассмотрим следующую попытку добавления подсказок типа к функциям parent
и child
:
def parent(*, a: Type1, b: Type2):
...
def child(*, c: Type3, d: Type4, **kwargs):
parent(**kwargs)
...
MyPy жалуется, что kwargs
имеет тип Dict[str, Any]
, но аргументы a
и b
требуют Type1
и Type2
соответственно.
Я понимаю, что решение этой ошибки заключается в переписывании child
следующим образом:
def child(*, a: Type1, b: Type2, c: Type3, d: Type4, **kwargs):
parent(a=a, b=b)
...
Однако что, если список аргументов parent
намного длиннее, или есть функция grandchild
, которая имеет свой собственный список аргументов и должна вызываться child
. Требуется ли вам перечислять аргументы и их типы из всех нижестоящих функций? Или есть изящный способ обрабатывать ввод «по ключу» **kwargs
?
Комментарии:
1. Это также было опубликовано в MyPy на GitHub: github.com/python/mypy/issues/6552