Python中将字典转换为对象以支持点号访问属性

沈知远
沈知远
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍如何在Python中将字典转换为对象,从而实现通过点号(.)访问属性的便捷方式。通过自定义Dict类并重写特殊方法,实现递归转换嵌套字典。同时详细解析vars()函数的用法,展示如何提取对象的属性和属性值,返回字典类型,帮助开发者更灵活地处理数据结构。

Python字典转对象实现

直接展示核心实现代码,便于快速理解。


database = [
  {
    "name": "18D_Block",
    "xcc":{  
      "component": {
        "core":[],
        "platform":[]
      },
    },
    "uefi":{  
      "component": {
        "core":[],
        "platform":[]
      },
    }
  }
]
class Dict(dict):
  __setattr__ = dict.__setitem__
  __getattr__ = dict.__getitem__
 
def dict_to_object(dictObj):
  if not isinstance(dictObj, dict):
    return dictObj
  inst=Dict()
  for k,v in dictObj.items():
    inst[k] = dict_to_object(v)
  return inst
# 转换字典成为对象,可以用"."方式访问对象属性
res = dict_to_object(database[0])
print res.name
print res.xcc
print res.xcc.component
print res.xcc.component.core

补充知识:[Python] 字典 vars()函数:以字典类型提取对象的属性和属性值

功能

该函数用于提取对象的属性和属性值,返回值类型为dictionary字典。

语法

vars(object)

实例

vars()函数详解


>>>print(vars())
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}

>>> class Test:
...   a = 1
... 

>>> print(vars(Test))
{'a': 1, '__module__': '__main__', '__doc__': None}

>>> test = Test()
>>> print(vars(test))
{}

对于 x = 1 这样的赋值语句,执行后名称 x 引用到值 1。这类似于字典结构,键引用值,变量与其对应值之间隐含着一个“不可见”的字典。我们可以使用 vars() 函数来返回这个字典:


>>> x = 1
>>> scope = vars()
>>> scope["x"]
1

以上这篇Python转换字典成为对象,可以用"."方式访问对象属性实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表