我具有以下形式的功能
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中)。
有什么办法可以解决这个问题?