password
查看人数
type
status
date
slug
summary
category
icon
tags
作者
状态
json.AttrDict - 让字典也可像对象一样属性访问
在Python中,我们常用dict对象来储存键值对数据。但是,dict对象只支持使用[]来访问键对应的值,而不支持.属性访问的方式。
例如,如果我们有一个dict:
要访问name对应的值,只能使用user['name'],而不能使用user.name。
这在许多情况下不是很方便,特别是当对JSON数据解析得到的dict对象进行访问时。如果可以使用.属性访问,无疑会更加优雅简洁。
为此,Python在3.12版本中新增了json.AttrDict对象。它继承自dict,所以具有所有dict的功能。但同时也支持.属性访问方式。
我们可以很简单地如下创建一个AttrDict对象:
可以看到,AttrDict同时支持.属性访问和[]方括号访问,这为我们带来了极大的方便。
而要从JSON字符串创建AttrDict对象,只需要在json.loads()中传入object_hook参数:
如果获取一个不存在值,就会AttributeError报错

json.AttrDict的主要用途有:
1. 从JSON数据创建一个“对象”化的对象,支持.属性访问
2. 当对象的键可能发生变化时,提供更好的灵活性
3. 继承自dict,所以保留了所有dict的功能
它使得对象的属性访问方式更加简洁优雅,带来许多便利。
需要注意的是,json.AttrDict仅支持Python 3.12及以上版本。在早期版本中使用会报错,这是因为它在3.12中首次引入。
总之,json.AttrDict是一个非常实用的对象,让dict也拥有了对象的属性访问方式,为Python编程带来很多便捷。如果你的代码主要面向Python 3.12及以上版本,强烈推荐学习和使用这个“魔术对象”!
- 作者:躁静有徒
- 链接:https://blog.zaojingyoutu.top//article/41d79d0d-cb2f-aea3-3a9a-f6e96ea02276
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。