直接上代码,将dict传入构造的特殊类就可以了
本来是参照人家的用,但发现不能传入嵌套的dict,于是修改了一下
class Config:
def __init__(self, entries: dict={}):
self.__dict__.update(entries)
最终实现
class Config:
def __init__(self, entries: dict={}):
for k, v in entries.items():
if isinstance(v, dict):
self.__dict__[k] = Config(v)
else:
self.__dict__[k] = v
传入的json就可以像类属性一样访问了,完美。
a = {
"he": {
"tell" : "you are sunshine"
}
}
c = Config(a)
print(c.he.tell)
# you are sunshine
所以,其实class转dict也就有了思路,访问class.__dict__
然后做需要的处理就行啦。
2021/3/1 更新:现成的库,collections.namedtuple,虽然名含tuple,但其实和dict是一样的,并且可以在dict和namedtuple之间相互转换,只要定义好namedtuple包含什么字段。缺点就是字段必须是已知的。