用于基于属性访问字典和其他映射的极简库

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的方法或保留名称,因此 您可以愉快地使用诸如keysitems

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;有关详细信息,请参阅许可证文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen