基于属性的字典和其他映射的最简库
项目描述
attribute-mapping 是一个用于基于属性的字典和其他映射访问的Python库。
与其他许多相同想法的实现相比,如AttrDict和各种其他实现,这个库非常简单,没有任何冗余
几乎没有API
AttributeMapping 实例并不假装是 dict
可以使用 dict 以及实现 collections.abc.Mapping 抽象基类的其他对象
没有对键/属性名称的限制
行为或怪异角落没有令人不愉快的惊喜
现代代码;仅支持Python 3.4+
100% 测试覆盖率
安装
python -m pip install attribute-mapping
使用
通过传递一个字典或其他映射来创建一个 AttributeMapping 实例
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__ 和其他方法)和包含检查(in)也有效
x["a"] # gives 1 x["b"]["c"] # gives 2 x["foo"] = 123 "foo" in x # True del x["foo"]
但是,没有其他类似字典的方法或保留名称,所以您可以愉快地使用像 keys 和 items 这样的属性
x.items = [1, 2, 3]
迭代返回(键,值)元组,就像正常映射的 .items() 一样
for key, value in x: ...
最后,要获取用于 AttributeMapping 的原始对象,请使用内置的 vars() 函数
d = {"a": 1} x = AttributeMapping(d) vars(x) is d # True
致谢
此库由 wouter bolsterlee (wbolster) 编写。
有无数类似的实现,因此作者感谢整个Python社区为这个想法提供灵感,制作了另一个实现。
版本历史
1.3.0 (2019-03-13)
添加对 len() 的支持
1.2.0 (2019-03-12)
添加对(不)等性测试的支持
1.1.0 (2019-03-09)
添加对自定义映射的支持
1.0.0 (2019-03-08)
初始发布
许可证
BSD;详细信息请参阅 LICENSE 文件。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
attribute-mapping-1.3.0.tar.gz (4.0 kB 查看哈希值)