问题标签 [python-dataclasses]

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 回答
800 浏览

celery - 我可以使用数据类(或类似的)作为 Celery 任务的参数和返回值吗?

默认情况下,Celery 任务的参数可以接受原始类型、列表和字典作为参数和返回值。

但是如果我想发送和返回更复杂的值呢?我想使用 Python 3.7 的数据类作为参数和返回值。由于我使用的是 Python 3.6,因此我使用的是数据类的反向移植,但据我所知,这几乎是一回事。

当我尝试发送或返回一个数据类实例时,我收到一个错误,指出该对象不是 JSON 可序列化的......这是正确的:JSON 序列化程序不知道如何处理类似的事情。

那么有一种方法可以使用自定义的 JSON 序列化器,它可以将数据类实例作为参数处理并返回值?

0 投票
2 回答
3274 浏览

python - 检查数据类字段是否具有默认值的 Pythonic 方法

我最近一直在使用 python 3.7,并正在寻找利用新数据类的方法。基本上我有一个迭代数据类字段并检查它们是否具有默认值的方法:

但是在官方文档中,它说:

MISSING 值是一个标记对象,用于检测是否提供了 default 和 default_factory 参数。使用此标记是因为 None 是默认值的有效值。任何代码都不应直接使用 MISSING 值。

任何人都知道更好/更pythonic的方式来做到这一点?

0 投票
3 回答
399 浏览

python - @dataclass Python 类中的拼写错误的字段

如何使它在@dataclass-decorated Python 类中设置拼写错误的字段时引发异常?

我想要一种实用的方法来做到这一点。我需要编写自己的装饰器吗?

0 投票
1 回答
1313 浏览

python - 有没有办法使用带有默认字段的数据类和 __slots__

我想放置__slots__一个带有默认字段的数据类。当我尝试这样做时,我收到此错误:

有没有办法做到这一点?

0 投票
0 回答
1186 浏览

python - 无法使用 lambda 默认腌制数据类

如果我有一个简单dataclass的可变默认值,据我所知,我需要使用default_factory.

但是,由于 lambda,这使得该类不可腌制:

所以如果我们腌制它:

酸洗会返回:

这是由于在 中mappingproxy可见的对象c.__dataclass_fields__

如何使课程可腌制?我需要这样做才能将其发送Paralleljoblib.

0 投票
1 回答
990 浏览

python - 避免 @dataclass 变量声明的 Python lint 警告

我正在尝试dataclassesPython 3.7 中的功能,但在单词“hue”下方收到此警告:

我想这是一个短绒警告。我尝试了 python 扩展提供的几个 linter,但它们都不起作用。

有没有办法启用语法检查等但避免收到此警告?

使用 pep8 发出警告 警告和错误

使用 pylint 或 mypy 发出警告 警告

0 投票
4 回答
3439 浏览

python - 使用 queue.PriorityQueue,不关心比较

我正在尝试queue.PriorityQueue在 Python 3(.6) 中使用。

我想存储具有给定优先级的对象。但是如果两个对象具有相同的优先级,我也不介意PriorityQueue.get返回。换句话说,我的对象不能以整数进行比较,允许它们进行比较是没有意义的,我只关心优先级。

Python 3.7 的文档中,有一个解决方案涉及dataclasses. 我引用:

如果数据元素不可比较,则可以将数据包装在一个忽略数据项而只比较优先级编号的类中:

唉,我正在使用 Python 3.6。在这个版本的 Python 的文档中,没有关于使用PriorityQueue优先级的评论,而不是关心在我的情况下不合逻辑的“对象值”。

有没有比__le__在我的自定义类上定义和其他比较方法更好的方法?我发现这个解决方案特别丑陋和违反直觉,但那可能是我。

0 投票
0 回答
1634 浏览

python - 具有多重继承(mixin)和混合默认选项的 Python @dataclass

我正在尝试创建一个由继承的数据类组成的 Python 3.7 数据类:

这会引发以下异常:

似乎 Python 的@dataclass分辨率在通过 MRO 反转时并没有对齐所有父级的默认和非默认选项。有没有解决的办法?

编辑:我现在使用 Pydantic 库,它提供了更多的控制以及 JSON 序列化和反序列化等附加功能。

0 投票
1 回答
6923 浏览

python-3.x - 如何在 Python 3.7.x 中使用 list[customClass] 作为带有 @dataclass 的类型

我有以下数据类。

以及调用上述类的以下数据类。

尝试运行程序时出现以下错误

TypeError:泛型类型的参数必须是类型。

我也试过用_destinations这种方式给会员打电话。

然后我收到以下错误

TypeError:泛型类型的参数必须是类型。

我也尝试将班级成员设置为

并且在检查实例对象时,类中没有可用的列表。

我也试过。

尝试添加到列表时出现以下错误

AttributeError:“DestinationContainer”对象没有属性“_destinations”

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吗?

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