我正在使用Python 3.5和Mypy进行基本静态检查。最近,我重构了一些方法以返回OrderedDict,但在尝试使用指定键和值类型的返回注释时遇到了“'type' object is not subscriptable”错误。
简化示例:
Mypy并不会因为注释中的类型注释出现问题,事实上,如果我尝试执行“result [123] = 123”操作,它将发出警告。这是什么原因?
简化示例:
#!/usr/bin/env python3.5
from collections import OrderedDict
# this works
def foo() -> OrderedDict:
result = OrderedDict() # type: OrderedDict[str, int]
result['foo'] = 123
return result
# this doesn't
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, in <module>
def foo2() -> OrderedDict[str, int]:
TypeError: 'type' object is not subscriptable
Mypy并不会因为注释中的类型注释出现问题,事实上,如果我尝试执行“result [123] = 123”操作,它将发出警告。这是什么原因?