You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何继承dict的数据类经json.dumps序列化后得到空字典?

为什么继承dict的dataclass序列化后得到'{}'

原因核心在于json模块的序列化逻辑,以及dataclass结合dict子类的属性存储方式:

  • json.dumps处理对象时会优先识别类型:因为Foo类继承了dict,json会把它当作普通字典来处理,直接遍历其内部的键值对生成JSON。
  • dataclass给Foo定义的bar字段,是作为实例的属性存在于实例的__dict__中,并没有被添加到Foo继承自dict的键值对集合里。你实例化Foo(bar={'spam': 'eggs'})后,bar只是实例的一个属性,并非字典的键,所以json遍历这个"字典"时内部是空的,最终输出'{}'。

你可以通过以下代码直观验证:

print(example.bar)       # 输出 {'spam': 'eggs'},证明属性存在
print(list(example.keys()))  # 输出 [],证明字典内无键值对

内容的提问来源于stack exchange,提问作者Alexander McFarlane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 22:04:56