码迷,mamicode.com
首页 > 其他好文 > 详细

configs

时间:2019-04-05 13:57:00      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:strong   yield   直接   ini   dict   default   exception   turn   self   

import configs_default

import configs_override #不一定有这个文件 得换成 try except

configs = configs_default.configs

def chain(*dicts): #自己实现一个dict版本的chain
for d in dicts:
for k,v in d.items():
yield (k,v)

def merge_configs(c1,c2):
results={}
for k,v in chain(c1,c2):
if k in results:
results[k] = merge_configs(results[k],v) if isinstance(v,dict) else v #Iterable不行 str也是Iterable
else:
results[k] = v # 原来没有 直接加
return results

class Dict(dict):
‘‘‘
Simple dict but support access as x.y style.
‘‘‘
def init(self, names=(), values=(), **kw):#可以传入names=(‘id‘,‘name‘) values=(123,‘Tom‘)
super(Dict, self).__init__(**kw)
for k, v in zip(names, values):# zip 打包成一对对的tuple组成的list [(‘id‘,123),(‘name‘,‘Tom‘)]
self[k] = v
def getattr(self, key):
try:
return self[key]
except KeyError:
raise AttributeError(r"‘Dict‘ object has no attribute ‘%s‘" % key)
def setattr(self, key, value):
self[key] = value

def toDict(d):
results = Dict()
for k,v in d.items():
results[k] = toDict(v) if isinstance(v,dict) else v
return results

try:
import configs_override
configs = merge_configs(configs,configs_override.configs)
except BaseException as e:
pass

configs = toDict(configs)

configs

标签:strong   yield   直接   ini   dict   default   exception   turn   self   

原文地址:https://www.cnblogs.com/ShawSpring/p/10658351.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!