python中将字典改造为对象
在实际项目中,当使用json模块加载一个深度很深的字典类型的json文件时,使用字典的访问方式,将会出现很多中括号,即不直观也不美观,可以将这个字典转化为对象,使得可以用.的方式访问。
代码如下:
class Dict2Obj(dict)sNBhJBqC: 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)
输出:
getwww.devze.comattr is called
getattr is calledshenzhen
原理很简单,就是重写__getattr__方法,关于__getattr__的介绍,可以参考之前的文章python getattribute 、getattr、setattr 详解。
当一个对象通过’.'来访问一个属性时,如果报错,将会转到__getattr__做进一步处理,此时就可以将该key对应的value返回,当然如果value仍然是一个编程客栈字典,则需要将它继续转化为一个Dict2Obj对象。
当访问不存在的key时,和字典一样,会弹出异常,为了避免这种情况发生,类似字典,可以使用get()访问。
到此这篇关于python中将字典改造为对象的方法的文章就介绍到这了,更多相关python字典改造为对象内容请搜索编程客栈(wjsww.cppcns.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论