跳转到主要内容

基于属性的字典和其他映射的最简库

项目描述

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

但是,没有其他类似字典的方法或保留名称,所以您可以愉快地使用像 keysitems 这样的属性

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 查看哈希值)

上传时间 源代码

构建分发

attribute_mapping-1.3.0-py3-none-any.whl (4.2 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面