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])