mypy:可选参数,已初始化为默认值,并用于lambda

时间:2019-05-20 23:50:05

标签: mypy

我具有以下形式的功能

def do_stuff(x: Optional[Dict[str, int]]=None)
    if x is None:
        x = {'foo': 1, 'bar': 2}

    # no type error
    for k in x.keys():
        a = x.get(k)

    # type error 
    sorted(x.keys(), lambda k: x.get(k))

这会引发类型错误

Item "None" of "Optional[Dict[str, int]]" has no attribute "get"

sorted(x.keys()行上。我认为这是因为mypy尚未意识到我已经在x行中定义了if x is None:,因此它不再是可选的。仅当for k in x.keys():x.get(k)时,此不会x.get(k) .... sorted的形式出现错误。在lambda中)。

有什么办法可以解决这个问题?

0 个答案:

没有答案