Python中关于py3 type hint的最佳实现有哪些?

比如调用远程 http 请求如何把返回的 dict 使用 type hint?使用 Dict[]还是使用类?


Python中关于py3 type hint的最佳实现有哪些?
19 回复

调用远程 HTTP 是没有 dict 返回类型的,如果你说的是 json,那么用 json 库来 parse


关于Python 3类型提示的最佳实践,核心是渐进式采用工具链配合

  1. 基础类型标注:直接使用intstrList等内置类型。
  2. 复杂结构:对于list[int]dict[str, int]这类泛型,优先用typing模块(Python 3.9+可直接用内置语法)。
  3. 可选与联合类型:用Optional[int]表示可能为None,用Union[int, str]int | str(3.10+)表示多种类型。
  4. 自定义类型:用TypeVar定义泛型函数或类,用NewType创建区分型别名。
  5. 工具集成:配合mypypyright进行静态检查,用pydantic在运行时验证数据。

总结:从简单标注开始,逐步细化,并借助工具确保一致性。

但是怎么自动转化成类呢,像 typescript as 一下就好了,就变成类了,python 里面一定要 Cls.__init__吗?

python 里的是 type hint,只是给 IDE 用的。
对你来说主要问题是你用库不支持 type hint,你只要“告诉 IDE ”变量的类型就可以了。
比如:
from typing import Mapping
import json
s = json.loads("""{‘s’: ‘d’, ‘s’: 3}""")
b: Mapping = s

我想要的不是这个,怎么说,我想要的是 IDE 智能感觉 dict 里面有哪些 key,就像个类一样





那我猜测,你要的是这个?


如果你要写类,倒不如用 protobuf 和 thrift 了,写好 IDL,类自动生成的

有没有根据 json 自动生成类的呀,感觉 js 对 json 转变成类比 python 要好呀

自动生成类也是动态的。。在 ide 层面还没运行的时候实现代码提示是不可能的。。js 也是不可能的。。

不是,刚刚我其实说的是两个问题,第一个就是根据一个 json 例子,generate 类的代码<br/>
2. typescript 的 json.parse 返回的本身就是一个对象,而且根据鸭子模式,只要字段一致,就可以直接当成某个特殊的类来用,不像 python,json.loads 返回的是一个 dict,dict 和类之间有明显的区别

首先定义好 class, 然后自己写个方法, 从 dict 映射到 class. 大不了就是 hasattr 和 setattr…

#11 那是必然的,Python 里面 dict 和 object 完全是两样不同的东西,JS 里面都是 object …

#12

from collections import OrderedDict

class AttrDict(OrderedDict):
getattr = OrderedDict.getitem setattr = OrderedDict.setitem

这个东西有什么作用?




this ?
虽然没什么卵用,但是我想实现了你说的事情了

看 mypy 文档就懂了

我发现我想要的最接近我想要的是 py3.7 dataclass 或者 attrs 这个库的功能了

回到顶部