下面代码并没有实现, 预留后续继续研究:
1. 完全模拟字典行为
2. 只读
3. 特别的在遍历,嵌套上面需考虑
class _CfgData(object):
"""配置数据,主要为了实现类似JSON格式数据的ReadOnly
"""
def __init__(self, data):
self._data = data
def __getitem__(self, i):
return self.deco_data(self._data[i])
def get(self, *args):
if len(args) == 2:
if args[0] not in self._data:
return args[1]
name = args[0]
return self.deco_data(self._data[name])
<pre name="code" class="python"> def __getattr__(self, key):
"""proxy
:param key:
:return:
"""
return getattr(self._data, key)
def deepcopy(self): return copy.deepcopy(self._data) def __len__(self): return len(self._data) @classmethod def deco_data(cls, data): """修饰数据,如果是最基本的几个类型就不用修饰直接返回 """ if data is None or isinstance(data, (str, int, float, unicode, bool)): return data return cls(data)