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

 更新时间:2023年11月03日 10:19:49   作者:惊瑟  
这篇文章主要介绍了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字典改造为对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中特殊函数集锦

    Python中特殊函数集锦

    这篇文章主要介绍了Python中特殊函数,主要介绍一下四个函数:1 过滤函数filter 2 映射和归并函数map/reduce 3 装饰器@ 4 匿名函数lamda,需要的朋友可以参考下
    2015-07-07
  • python中的TCP(传输控制协议)用法实例分析

    python中的TCP(传输控制协议)用法实例分析

    这篇文章主要介绍了python中的TCP(传输控制协议)用法,结合完整实例形式分析了Python基于TCP协议的服务器端与客户端相关实现技巧及操作注意事项,需要的朋友可以参考下
    2019-11-11
  • Django 拼接两个queryset 或是两个不可以相加的对象实例

    Django 拼接两个queryset 或是两个不可以相加的对象实例

    这篇文章主要介绍了Django 拼接两个queryset 或是两个不可以相加的对象实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python得到qq句柄,并显示在前台的方法

    python得到qq句柄,并显示在前台的方法

    今天小编就为大家分享一篇python得到qq句柄,并显示在前台的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 关于文件Permission denied解决方案(pip)

    关于文件Permission denied解决方案(pip)

    这篇文章主要介绍了文件Permission denied解决方案(pip),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python异常处理:try、except、else、finally的全面解析

    Python异常处理:try、except、else、finally的全面解析

    在Python中,异常是程序在运行时发生的错误,当Python解释器遇到一个它不能处理的错误时,它会抛出一个异常,异常处理的主要目的是在程序遇到错误时,提供一种方法来处理这些错误,而不是简单地让程序崩溃,本文介绍了Python异常处理:try、except、else、finally的全面解析
    2024-07-07
  • python正则分析nginx的访问日志

    python正则分析nginx的访问日志

    最近工作中遇到一个需求,是要分析nginx的访问日志,觉着利用python来实现比较合适,所以下面这篇文章主要介绍了利用python正则如何分析nginx的访问日志,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • Python下的subprocess模块的入门指引

    Python下的subprocess模块的入门指引

    这篇文章主要介绍了Python下的subprocess模块的入门指引,subprocess模块被用于Python的多线程编程,需要的朋友可以参考下
    2015-04-04
  • 实现 Python 脚本生成命令行

    实现 Python 脚本生成命令行

    这篇文章主要介绍了实现 Python 脚本生成命令行,文章通过定义一个 scrape 方法展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • django使用图片延时加载引起后台404错误

    django使用图片延时加载引起后台404错误

    本文给大家介绍的是作者在Django中使用图片的延时加载技术后引起后台404错误的问题以及解决思路和方法,有需要的小伙伴可以参考下
    2017-04-04

最新评论