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

python - 在 namedtuple 中输入提示

考虑以下代码:

上面的代码只是展示我想要实现的目标的一种方式。我想namedtuple使用类型提示。

你知道任何优雅的方式来达到预期的结果吗?

0 投票
11 回答
14621 浏览

python - 如何避免 __init__ 中的“self.x = x;self.y = y;self.z = z”模式?

我看到像这样的模式

非常频繁,通常带有更多参数。有没有避免这种乏味重复的好方法?类应该继承自namedtuple吗?

0 投票
4 回答
139218 浏览

python - 什么是数据类,它们与普通类有何不同?

随着PEP 557数据类被引入 python 标准库。

他们使用@dataclass装饰器,它们应该是“具有默认值的可变命名元组”,但我不确定我理解这实际上意味着什么以及它们与普通类有何不同。

python数据类到底是什么,什么时候最好使用它们?

0 投票
1 回答
904 浏览

python - 为什么 Python 3.7 数据类不支持 < > <= 和 >=,还是支持?

对于Transcrypt Python to JavaScript 编译器的 3.7.1 版本,我目前正在使用新的@dataclass装饰器。根据 PEP 的摘要,我曾预计==, !=, <, >, >=, <=会得到支持,但似乎并非如此:

一些比较不起作用:

为什么不支持比较运算符,除了==and !=?还是我忽略了什么?

0 投票
2 回答
6247 浏览

python - 如何使用数据类制作“仅限关键字”字段?

自 3.0 起,仅支持创建参数关键字:

如何使用数据类获得那种签名?像这样的东西,但最好没有SyntaxError

理想情况下是声明性的,但使用__post_init__钩子和/或替换类装饰器也很好——只要代码是可重用的。

编辑:也许像这样的语法,使用省略号文字

0 投票
4 回答
12111 浏览

python - 替换数据类对象中的属性

我想替换数据类实例的属性类似于namedtuple._replace(),即制作原始对象的更改副本:

这将返回:

如何在数据类对象中模仿此功能?

0 投票
2 回答
8307 浏览

python - 如何在不注释类型的情况下添加数据类字段?

当数据类中有一个类型可以是任何类型的字段时,如何省略注释?

似乎上面的代码实际上并没有为fav_duck. 它只是使它成为一个普通的旧类属性。

0 投票
6 回答
15023 浏览

python - 如何使数据类更好地与 __slots__ 一起工作?

决定从数据类中删除__slots__对 Python 3.7 的直接支持。

尽管如此,__slots__仍然可以与数据类一起使用:

但是,由于工作方式的原因,__slots__无法为数据类字段分配默认值:

这会导致错误:

如何使默认字段__slots__和默认dataclass字段一起工作?

0 投票
1 回答
664 浏览

python - Python 的 __slots__ 和数据类的(内存方面和访问时间方面)比较是什么

Python__slots__用于减少实例的内存占用,这是通过将变量存储在“小型固定大小的数组 [s] 中来实现的,就像元组或列表一样”。实例属性是可变的,但您不能添加其他属性。

另一方面,有一些数据类(根据我收集的内容)通过定义一些 dunder(等)来帮助创建类,并且 PEP 557 将其描述为“具有默认值的可变命名元组”。

我了解它们的目的是不同的,实际上您可以同时使用它们

0 投票
1 回答
9860 浏览

python - 如何在 python 数据类中定义日期时间字段?

尝试正确获取 Python 3.7 新数据类的语法。

如果我想在我的数据类中包含一个日期时间值,

我应该写什么???对于日期时间字段?