问题标签 [python-attrs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
657 浏览

python - 如何通过 cloudpickle 腌制 python-attrs 类函数?

我正在使用 cloudpickle 来传递函数,我想attrs通过 cloudpickle 传递一个类函数。

运行这给了我1 + test + 2.4

而 cloudpickle 实现

给我错误:(TypeError: can't pickle _thread._local objects我将在底部发布完整的错误日志)

我相信我需要实现一些__getstate____reduce__功能来让 cloudpickle 腌制课程,但我都尝试过,但没有任何运气。

添加功能:

给出同样的错误

为了实现这一目标,我应该实施什么?

蟒蛇错误日志:

0 投票
0 回答
660 浏览

python - 如何使用 python attrs 为可变属性提供默认值?

刚开始用python attr,看起来不错。该包允许通过使用工厂创建新对象来轻松创建空的可变参数,但我不清楚使用默认值填充这些空对象的预期方法。例如,这可以创建一个具有默认值的新列表,但默认值会在方法调用中丢失:

0 投票
2 回答
167 浏览

python - 动态定义依赖于先前定义的属性的属性

我想要一个代表路径root和任意数量的子目录的对象,这些子目录是用os.path.join(root). 我想用 , , 等形式访问这些路径self.root...self.path_a除了self.path_b直接通过 访问它们之外self.path_a,我还希望能够遍历它们。不幸的是,下面的方法不允许通过attr.astuple(paths)

下面的第一段代码是我想出的。它有效,但对我来说有点hacky。由于这是我第一次使用attrs,我想知道是否有更直观/惯用的方法来解决这个问题。我花了很长时间才弄清楚如何编写下面相当简单的类,所以我想我可能遗漏了一些明显的东西。

我的方法

输出

以下是我的第一次尝试,它不起作用。

尝试失败

输出

0 投票
1 回答
1620 浏览

python - 如何使用 attrs 和 cattrs 反序列化带有可选字段的 json

我想使用 attr 和 cattrs 反序列化 MongoDB 文档。由于 noSQL 没有固定的模式,我需要以某种方式指向 attr.ib-s 可能会丢失它们,并且在这种情况下不要将它们添加到 dict 的对象中。

我以前使用过滤锅来做这种事情,它在 colander.SchemaNode 构造函数中提供了一个“缺失”参数,它通过将“colander.drop”作为参数传递来做到这一点。我想知道如何对这些库做同样的事情,我在文档中没有找到任何东西。所以:

应该返回一个只有 A 和 B 属性的对象。我一直在尝试使用一些参数(init、default...),甚至使用来自键入 lib 的 Optional 类,但是我尝试的所有方法都以某种方式返回了该属性。

谢谢你的帮助。

0 投票
1 回答
52 浏览

python-attrs - 在转换器中获取异常的属性名称

当验证器中发生错误时,可以将失败属性的名称添加到错误消息中,因为该名称已传递给验证器。

但是,如果转换器中发生错误,我看不到获取失败属性名称的方法,例如

我该如何处理这种情况?

0 投票
2 回答
1455 浏览

python - 具有可迭代字段的冻结和可散列数据类

现在我终于放弃了对 Python 2 的支持,我正在从 Python 3 迁移attrs到 Python 3 dataclasses,并且有一个问题让我特别苦恼。

假设我有一个冻结且可散列的类MyClass,其中一个字段my_field为 type tuple

多亏了attrs转换器,我能够提供灵活的 API,客户端能够my_field使用各种类型进行实例化,例如list,setdict_keys. 在创建类之前,它们都会自动转换为 a tuple

我可以保留这个 APIdataclasses吗?

根据要求,一个小代码示例:

0 投票
1 回答
424 浏览

python - attrs.asdict() 中的列表类型缺少 dunders?

我试图list()使用 Python 装饰器创建一个类的嵌套attrs,并注意到它attrs.asdict()在某些级别的子变量上不起作用。这样:

  • attrs.asdict(mlle)显示正常
  • attrs.asdict(mlle.list_of_list_of_elements)#失败
  • attrs.asdict(mlle.list_of_list_of_elements[0])显示正常

我的工作示例是:

现在继续使用该attr.asdict()功能...

我很确定我做错了一些简单的事情,因为我认为我用attrs.

我更感到困惑的attr.asdict()是,在每个虚线子变量上都不能顺利使用,这样mllemlle.list_of_list_of_elements[0]工作,但不是mlle.list_of_list_of_elements介于两者之间。

0 投票
1 回答
4211 浏览

python - 如何使用 attr.validators.optional

根据attrs 文档,可选属性应声明如下:

但是,当我尝试使用可选属性时,我得到以下结果:


具有强制属性的类

类定义

类的实例化

缺少属性

好的

类型无效

好的

正确的类型

好的

具有可选属性的类

类定义

类的实例化

缺少属性

KO

类型无效

好的

正确的类型

好的


使用可选属性我做错了什么?我的误解在哪里?

0 投票
1 回答
1332 浏览

python - 用 cattrs 解构一个复杂的类

我在使用attrs/cattrs将自定义数据类转换为 JSON 格式时遇到问题。我的班级有以下形式:

我面临的问题是,当我尝试转换为dictvia cattrs.unstructure ,反之亦然 viacattrs.structure时,cattrs会显示一个错误,告诉我应该使用钩子:

我注册了一个钩子来datetimestr给定的格式转换为:

但后来我收到以下错误:

我需要能够使用格式为的日期时间从对象实例转换为 JSON 并返回%Y-%m-%d %H:%M:%S。我怎样才能做到这一点?

0 投票
3 回答
666 浏览

python - 是否可以在 Python attr 中自引用类型

我想做这样的事情:

可以按 as 输入,type=Dict但我想知道您是否可以自我引用 like type=Dict[str, cls],但它可能会受到 Python 可能性的限制。

谢谢。