Python中将字典转换为对象以支持点号访问属性
本文介绍如何在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转换字典成为对象,可以用"."方式访问对象属性实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













