【发布时间】:2017-11-16 21:41:50
【问题描述】:
我定义了以下类型:
KRPCTypes = typing.Union[int, bytes, list, "KRPCDict"]
KRPCDict = typing.Dict[bytes, KRPCTypes]
当我运行mypy 时,我收到以下错误:
error: Invalid type "test.KRPCDict"
这是重现错误的完整最小代码:
import typing
KRPCTypes = typing.Union[int, bytes, list, "KRPCDict"]
KRPCDict = typing.Dict[bytes, KRPCTypes]
谢谢!
【问题讨论】:
-
显然 mypy 还不支持递归类型:github.com/python/mypy/issues/731(引用主要开发人员的话:“我目前的计划是将递归类型推迟到简单的结构子类型出现后再重新考虑它们。在考虑了它们之后它们会增加很多复杂度
-
那么基于字符串文字的版本:
Tree_Type = TypeVar('Tree_Type', bound='Tree')和Tree = Dict[str, Union[Tree_Type, str]](对于 str-paths→str 的树)呢?我没有进行过深入的测试,但就我的测试而言,这是有效的。
标签: python static-typing mypy