python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python字典改造为对象

python中将字典改造为对象的方法

作者:惊瑟

这篇文章主要介绍了python中将字典改造为对象的方法,在实际项目中,当使用json模块加载一个深度很深的字典类型的json文件时,使用字典的访问方式,将会出现很多中括号,即不直观也不美观,可以将这个字典转化为对象,使得可以用.的方式访问,需要的朋友可以参考下

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()访问。

到此这篇关于python中将字典改造为对象的方法的文章就介绍到这了,更多相关python字典改造为对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文