问题标签 [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 投票
4 回答
38002 浏览

python - 验证 python 数据类中的详细类型

Python 3.7 不久前发布了,我想测试一些花哨的新dataclass+ 打字功能。typing使用本机类型和模块中的类型,让提示正常工作很容易:

但我想尝试的另一件事是在运行时强制类型提示作为条件,即不应该dataclass存在类型不正确的 a 。它可以很好地实现__post_init__

这种validate函数适用于原生类型和自定义类,但不适用于typing模块指定的那些:

有没有更好的方法来验证一个无类型列表和一个类型的列表typing?最好是不包括检查任何list, dict,tuple或' 属性set中所有元素的类型。dataclass


几年后重新审视这个问题,我现在开始使用pydantic在我想要验证通常只为其定义数据类的类的情况下。不过,我会用当前接受的答案留下我的印记,因为它正确回答了原始问题并具有出色的教育价值。

0 投票
1 回答
4191 浏览

python - 是否可以在数据类中使用 *args?

我最近开始使用数据类,它们将是 3.7 的一个很好的补充。我很好奇是否或如何使用数据类重新创建此类的相同功能。

这行不通。引发异常TypeError: __init__() missing 1 required positional argument: 'submenus'

我认为这是因为该类没有解包参数的说明。 有什么方法可以指示数据类装饰器需要解压缩子菜单吗?

0 投票
15 回答
46956 浏览

python - 数据类和属性装饰器

我一直在阅读 Python 3.7 的数据类作为命名元组的替代品(我通常在必须对结构中的数据进行分组时使用它)。我想知道数据类是否与属性装饰器兼容,以便为数据类的数据元素定义 getter 和 setter 函数。如果是这样,这是在某处描述的吗?或者有没有可用的例子?

0 投票
2 回答
4527 浏览

python - Python 3.7:数据类和 SimpleNameSpace 的实用程序

Python 3.7 提供了dataclasses具有预定义特殊功能的新功能。

从概述的角度来看,dataclasses两者SimpleNamespace都提供了很好的数据封装工具。

很多时候我SimpleNamespace只是用来包装数据并移动它。

我什至将其子类化以添加特殊功能:

对于我的问题:

  1. 有人如何在 和 之间SimpleNamespace进行选择dataclasses
  2. 为什么它们是必要的,当扩展SimpleNamespace?
  3. 所有其他用例都dataclasses迎合什么?
0 投票
2 回答
2101 浏览

python - Python 3.7:数据类不会为 `eq=False` 引发 `TypeError`

我正在尝试dataclassesPython 3.7中的新功能

装饰器dataclass可以传递参数来控制添加到类中的 dunder 函数。

出于某种原因,装饰者似乎没有提出TypeError争论eq=False

根据文档:

如果我理解正确,如果我通过eq = False__eq__将不会添加函数,并且TypeError在比较同一类的两个实例时应该抛出 a 。相反,该eq参数似乎没有效果。

上面没有提出TypeError并且总是评估为False

其他参数(例如:orderrepr)似乎表现如预期

我的理解有差距吗?

我正在使用泊坞窗图像python/rc-stretch

0 投票
3 回答
18295 浏览

python - 如何使用 Python 数据类记录类的构造函数?

我有一些现有的 Python 3.6 代码,我想转移到 Python 3.7 数据类。我有__init__很好的文档字符串文档的方法,指定构造函数采用的属性及其类型。

但是,如果我将这些类更改为使用 3.7 中的新 Python 数据类,则构造函数是隐式的。在这种情况下,我如何提供构造函数文档?我喜欢数据类的想法,但如果我不得不放弃清晰的文档来使用它们,我就不喜欢了。

编辑以澄清我目前正在使用文档字符串

0 投票
1 回答
14076 浏览

python - 导入数据类模块失败

今天我从 apt-get 安装了 python 3.7 来试用新的 dataclasses 模块。我单独安装了它,因为 python3.6 不能升级到 3.7。

当我输入:python3.7 --version时,它给了我:>>> Python 3.7.0a2作为我当前的版本。

问题是我似乎无法导入数据类。

我的导入声明是:from dataclasses import dataclass按照此处的说明

这是它给我的错误信息:

我什至尝试使用 pip3: 安装数据类模块pip3 install dataclasses。不确定这是否有必要。

关于可能是什么问题的任何建议?

[编辑] 刚刚用 python3.6 控制台试了一下,效果很好……很奇怪。

0 投票
10 回答
65783 浏览

python - 使 Python json 编码器支持 Python 的新数据类

从 Python 3.7 开始,有一种叫做数据类的东西:

但是,以下失败:

如何将json.dumps()实例编码Foo为 json对象

0 投票
1 回答
5707 浏览

python - Python 3.7:使用数据类模块初始化对象?

这是我在 python 3.6 中的代码

我想重写这段代码python 3.7,如何self._int_a: int = int(a)dataclasses模块初始化?

我知道我可以做类似的事情,但我不知道如何初始化_a: int = int(a)或类似的事情。

提前感谢您的想法和建议。

0 投票
1 回答
1006 浏览

python - 数据类定义中的引用类类型

是否可以引用当前在类定义中定义的类?

错误: