擅长:python、mysql、java
<p>递归类型是<a href="https://github.com/python/mypy/issues/731" rel="nofollow noreferrer">not yet supported in mypy</a>。尽管我不确定何时开始实施工作,但它们肯定在路线图上。它原定于今年早些时候开始,但语义分析阶段的先决条件重构(进行了大量内部更改以完全支持递归类型)最终花费了比预期更长的时间,因此我不确定新的时间表是什么。也许在下半年的某个时候?在</p>
<p>一种可能的替代方法是使用<a href="https://mypy.readthedocs.io/en/stable/more_types.html#typeddict" rel="nofollow noreferrer">TypedDicts</a>,它允许您将特定类型分配给特定的键。如果您已经提前知道了输入dict的结构,如果您确切地知道对象类型将具有哪些键,以及它们将映射到什么,那么这一点尤其有用。如果您喜欢使用对象而不是dict,并且不想编写一堆验证逻辑,那么像<a href="https://github.com/samuelcolvin/pydantic" rel="nofollow noreferrer">pydantic</a>这样的库在这里也很有用。在</p>
<p>不过,从实用的角度来看,如果dict结构是真正的自由形式,那么最好使用<code>ObjectType = Dict[str, object]</code>。毕竟,为了准确地识别您正在处理的EntryType,您必须添加一些isinstance检查来适当地缩小类型。因此,虽然从<code>object</code>开始而不是{<cd3>}会有点烦人,但根据你所做的,这可能不是一个太大的负担。在</p>