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

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第三方库


热门话题
在reducer中迭代自定义可写组件时出现java问题   属性文件中属性的java命名约定   任务链关闭的java Executor服务   java从Eclipse中的字段生成多个构造函数   java通过继承读取Json   java在不知道密钥的情况下解析json   java camel cxf如何在电子邮件中发送soap请求响应   java程序似乎跳过了if语句的一部分,在移回正确位置之前先移到else语句   测试简单的Java加密/解密inputFileName不存在   java从Jenkins REST API获取所有作业的所有构建的构建细节   java基本包装器和静态“类型”类对象   在WebSphere8.5上部署java代码   java对象相等(对象引用“=”)   java MongoDB整型字段到枚举的转换   每次我重新导入gradle时,IntelliJ都会不断重置Java设置   类型使用键或索引从Java中的数据类型检索值   在Java的列表接口中需要listIterator()和iterator()是什么?