from collections import abc
class CommonDict:
"""
模拟元类,拟实现a.b[0].c这样的方式获取结果
有个问题:路径里的字符必须满足python变量的命名规则
"""
def __init__(self, mapping):
if isinstance(mapping, abc.Mapping):
self._data_ = dict(mapping)
elif isinstance(mapping, abc.MutableSequence):
self._data_ = list(mapping)
else:
self._data_ = mapping
def __getitem__(self, item):
return CommonDict(self._data_[item])
def __getattr__(self, item):
if hasattr(self._data_, item):
return getattr(self._data_, item)
else:
return CommonDict(self._data_[item])