python中将字典改造为对象的方法
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字典改造为对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Django 拼接两个queryset 或是两个不可以相加的对象实例
这篇文章主要介绍了Django 拼接两个queryset 或是两个不可以相加的对象实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-03-03关于文件Permission denied解决方案(pip)
这篇文章主要介绍了文件Permission denied解决方案(pip),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-08-08Python异常处理:try、except、else、finally的全面解析
在Python中,异常是程序在运行时发生的错误,当Python解释器遇到一个它不能处理的错误时,它会抛出一个异常,异常处理的主要目的是在程序遇到错误时,提供一种方法来处理这些错误,而不是简单地让程序崩溃,本文介绍了Python异常处理:try、except、else、finally的全面解析2024-07-07
最新评论