Tôi đang sử dụng Python 3.5 cùng với Mypy để có một số kiểm tra tĩnh cơ bản cho tập lệnh của tôi. Gần đây tôi đã tái cấu trúc một số phương thức để trả về OrderedDict, nhưng chạy vào "loại 'đối tượng không phải là subscriptable" lỗi, khi tôi cố gắng sử dụng chú thích trả về với các loại khóa và giá trị được chỉ định.Làm cách nào để chỉ định các loại OrderedDict K, V cho chú thích Mypy type?
Giảm dụ:
#!/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())
Và đây là kết quả trăn khi nó được chạy: Tuy nhiên
Traceback (most recent call last):
File "./foo.py", line 12, in <module>
def foo2() -> OrderedDict[str, int]:
TypeError: 'type' object is not subscriptable
Mypy không có vấn đề với các loại chú thích trong bình luận và trong thực tế sẽ cảnh báo nếu tôi cố gắng để làm result[123] = 123
.
Điều gì gây ra điều này?
Nó hoạt động bây giờ (mypy phiên bản 0,501). – max