Рассмотрим следующую попытку добавления подсказок типа в функции 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
?