用于基于属性访问字典和其他映射的极简库
attribute-mapping的Python项目详细描述
attribute-mapping是 对字典和其他映射的基于属性的访问。
与同一思想的许多其他实现相比 名称,如AttrDict和其他各种名称,这个库是 极简且无杂质:
- 几乎没有API
- AttributeMapping实例不假装是dict
- 可以与dict以及实现 collections.abc.Mapping抽象基类
- 对键/属性名没有限制
- 在行为或怪异的角落案例中没有令人不快的惊喜
- 现代代码;仅限Python3.4+
- 100%测试覆盖率
安装
python -m pip install attribute-mapping
用法
通过传递字典或 另一个映射:
from attribute_mapping import AttributeMapping d = {"a": 1, "b": {"c": 2, "d": 3}} x = AttributeMapping(d)
现在您可以使用属性查找访问内容:
x.a # gives 1 x.b.c # gives 2 x.foo = 123 hasattr(x, "foo") # True del x.foo
除了属性访问之外,订阅(__getitem__和 friends)和包含检查(in)也可以工作:
x["a"] # gives 1 x["b"]["c"] # gives 2 x["foo"] = 123 "foo" in x # True del x["foo"]
但是,还有no其他类似dict的方法或保留名称,因此 您可以愉快地使用诸如keys和items:
x.items = [1, 2, 3]
迭代产生(key, value)元组,就像.items()on 正常映射可以做到:
for key, value in x: ...
最后,获取用于 AttributeMapping,使用内置的vars()函数:
d = {"a": 1} x = AttributeMapping(d) vars(x) is d # True
学分
这个图书馆是沃特·博尔斯特利(wbolster)写的。
有很多类似的实现,所以作者感谢 整个python社区的灵感 实现这个想法。
版本历史记录
- 1.3.0(2019-03-13)
- 添加对len() 的支持
- 1.2.0(2019-03-12)
- 添加对(in)相等测试的支持
- 1.1.0(2019-03-09)
- 添加对自定义映射的支持
- 1.0.0(2019-03-08)
- 初始版本
许可证
bsd;有关详细信息,请参阅许可证文件。