栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 将字典改造为对象

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 将字典改造为对象

在实际项目中,当使用json模块加载一个深度很深的字典类型的json文件时,使用字典的访问方式,将会出现很多中括号,即不直观也不美观,可以将这个字典转化为对象,使得可以用.的方式访问。

代码如下:

class Dict2Obj(dict):

    def __getattr__(self, key):
        print('getattr is called')
        if key not in self:
            return None
        else:
            value = self[key]
            if isinstance(value,dict):
                value = Dict2Obj(value)
            return value

dic = {
    'zone':{
        'city':'shenzhen',
        'location':'sx tech building'
    },
    'code':{
        'frontend':'vue',
        'backend':'python'
    }
}

dic2obj = Dict2Obj(dic)
print(dic2obj.zone.city)

输出:

getattr is called
getattr is called
shenzhen

原理很简单,就是重写__getattr__方法,关于__getattr__的介绍,可以参考之前的文章python getattribute 、getattr、setattr 详解。当一个对象通过’.'来访问一个属性时,如果报错,将会转到__getattr__做进一步处理,此时就可以将该key对应的value返回,当然如果value仍然是一个字典,则需要将它继续转化为一个Dict2Obj对象。
当访问不存在的key时,和字典一样,会弹出异常,为了避免这种情况发生,类似字典,可以使用get()访问。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号