【发布时间】:2019-05-24 16:16:29
【问题描述】:
我想使用 attr 和 cattrs 反序列化 MongoDB 文档。由于 noSQL 没有固定的模式,我需要以某种方式指向 attr.ib-s 可能会丢失它们,并且在这种情况下不要将它们添加到 dict 的对象中。
我之前使用过滤器来做这种事情,它在 colander.SchemaNode 构造函数中提供了一个“缺失”参数,它通过传递“colander.drop”作为参数来实现这一点。我想知道如何对这些库做同样的事情,我在文档中没有找到任何东西。所以:
import attr
from cattr import structure
@attr.s
class ABC:
A: float = attr.ib()
B: float = attr.ib()
C: float = attr.ib()
d = {'A': 1, 'B': 2}
obj = structure(d, ABC)
应该返回一个只有 A 和 B 属性的对象。我一直在尝试使用一些参数(init、default...),甚至使用来自输入 lib 的 Optional 类,但是我尝试的所有方法都以某种方式返回了该属性。
感谢您的帮助。
【问题讨论】:
-
什么是
attr、cattr和structure? -
attrs 是一个强大的 Python 包,用于减少样板代码:github.com/python-attrs/attrs,cattrs 有助于序列化/反序列化数据:github.com/Tinche/cattrs
标签: python json python-attrs