如何在Mypy类型注释中指定OrderedDict的K和V类型?
如何在Mypy类型注释中指定OrderedDict的K和V类型?
我正在使用Python 3.5和Mypy为我的脚本进行基本的静态检查。最近,我重构了一些方法,使其返回OrderedDict,但是当我尝试在返回注释中指定Key和Value类型时,遇到了"'type' object is not subscriptable"错误。
简化的示例代码:
#!/usr/bin/env python3.5 from collections import OrderedDict # 这段代码是可以工作的 def foo() -> OrderedDict: result = OrderedDict() # type: OrderedDict[str, int] result['foo'] = 123 return result # 这段代码是不可以工作的 def foo2() -> OrderedDict[str, int]: result = OrderedDict() # type: OrderedDict[str, int] result['foo'] = 123 return result print(foo())
当运行这段代码时,Python的输出如下:
Traceback (most recent call last): File "./foo.py", line 12, indef foo2() -> OrderedDict[str, int]: TypeError: 'type' object is not subscriptable
然而,Mypy对于注释中的类型标注没有问题,并且实际上,如果我尝试使用result[123] = 123
,它还会发出警告。
是什么原因导致了这个问题?