Python和MyPy-将Kwargs传递给复杂函数

时间:2019-03-15 21:03:42

标签: python-3.5 mypy typehints

考虑以下尝试向功能parentchild添加类型提示的方法:

def parent(*, a: Type1, b: Type2):
    ...

def child(*, c: Type3, d: Type4, **kwargs):
    parent(**kwargs)
    ...

MyPy抱怨kwargs的类型为Dict[str, Any],但是参数ab分别需要Type1Type2

我知道此错误的解决方案是通过以下方式重写child

def child(*, a: Type1, b: Type2, c: Type3, d: Type4, **kwargs):
    parent(a=a, b=b)
    ...

但是如果parent的参数列表长了很多,或者有函数grandchild拥有自己的参数列表并且必须调用child怎么办?您是否需要从所有下游函数中枚举参数及其类型?还是有一种优美的方式来处理**kwargs的“按键”键入?

0 个答案:

没有答案