比如调用远程 http 请求如何把返回的 dict 使用 type hint?使用 Dict[]还是使用类?
1
menc 2018-05-22 12:29:44 +08:00 1
调用远程 HTTP 是没有 dict 返回类型的,如果你说的是 json,那么用 json 库来 parse
|
2
chenqh OP @menc 但是怎么自动转化成类呢,像 typescript as 一下就好了,就变成类了,python 里面一定要 Cls.__init__吗?
|
3
vicalloy 2018-05-22 14:12:08 +08:00
python 里的是 type hint,只是给 IDE 用的。
对你来说主要问题是你用库不支持 type hint,你只要“告诉 IDE ”变量的类型就可以了。 比如: from typing import Mapping import json s = json.loads("""{'s': 'd', 's': 3}""") b: Mapping = s |
4
menc 2018-05-22 14:17:07 +08:00
|
5
menc 2018-05-22 14:17:54 +08:00 1
|
11
chenqh OP @menc 不是,刚刚我其实说的是两个问题,第一个就是根据一个 json 例子,generate 类的代码<br/>
2. typescript 的 json.parse 返回的本身就是一个对象,而且根据鸭子模式,只要字段一致,就可以直接当成某个特殊的类来用,不像 python,json.loads 返回的是一个 dict,dict 和类之间有明显的区别 |
12
sun1991 2018-05-22 16:38:30 +08:00 1
首先定义好 class, 然后自己写个方法, 从 dict 映射到 class. 大不了就是 hasattr 和 setattr...
|
13
Arnie97 2018-05-22 16:57:27 +08:00 via Android
@chenqh #11 那是必然的,Python 里面 dict 和 object 完全是两样不同的东西,JS 里面都是 object …
|
14
Arnie97 2018-05-22 17:04:00 +08:00 via Android 1
@sun1991 #12
from collections import OrderedDict class AttrDict(OrderedDict): __getattr__ = OrderedDict.__getitem__ __setattr__ = OrderedDict.__setitem__ |
17
bnm965321 2018-05-22 19:35:20 +08:00
看 mypy 文档就懂了
|
18
chenqh OP 我发现我想要的最接近我想要的是 py3.7 dataclass 或者 attrs 这个库的功能了
|