问题标签 [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 回答
1587 浏览

python - 使用 Dataclass 并获取 AttributeError:'int' 对象没有属性 'x'

尝试.

以此作为测试示例:

运行代码时,出现错误: AttributeError: 'int' object has no attribute 'x' 尝试将 return 添加到 def;同样的错误。

0 投票
1 回答
889 浏览

python - dataclasses.Field 不会将类型注释解析为实际类型

python 标准数据类模块的 Field 类的文档指定

其记录的属性是:

  • [...]
  • type:字段的类型。

对我来说,这似乎意味着该字段将包含类型本身,而不仅仅是字符串形式的名称。

但是,它似乎只是按原样复制类型注释,使其毫无用处。

例子:

在使用PEP563类型注释时,甚至会系统地出现该问题。

这是数据类模块中的错误吗?这是预期的行为吗?如果是这样,我如何检索给定 Field 实例的类型对象?

0 投票
0 回答
1209 浏览

python - pylint 似乎不适用于数据类中定义的字典

pylint 似乎无法识别数据类中定义的字典。

考虑以下代码:

在 pylint 下,这会产生以下错误。

我尝试使用typing.Dict[int, int]as 类型注释,它仍然给出相同的错误。

关于如何使 pylint 在上述情况下识别集合类型的任何建议?

0 投票
3 回答
2479 浏览

python - 如何使非冻结数据类冻结,反之亦然?

我想知道使以下数据类bar冻结的任何简单方法。

换句话说,我想要以下功能some_fn_to_freeze

并且,反函数some_fn_to_unfreeze

0 投票
1 回答
880 浏览

python - 在 Cython 中使用数据类

我正在使用 cython 进行代码混淆,因此目前性能不是问题。问题在于使用数据类。

当 cythonize 包含数据类定义的代码时,编译期间没有错误。但是在运行代码时,我得到一个TypeError: <field> is a field but has no type annotation.

这是我试图 cythonize 的代码:

在没有 cythonization 的情况下运行代码可以正常工作。但是在cythonization之后,我收到以下错误消息:

有没有办法在不重写源代码或只重写源代码的情况下避免这个问题?

0 投票
2 回答
7731 浏览

python - 检查一个类是否是 Python 中的数据类

如何检查一个类是否dataclass在 Python 中?

我发现我可以检查__dataclass_fields____dataclass_params__属性的存在,但我很想找到一种更优雅的方法来做到这一点。

我希望使用类似inspect.isclass函数的东西。例如,可能是类似的东西inspect.isdataclass

Python有类似的东西吗?

谢谢。

0 投票
1 回答
1556 浏览

python - Python Dataclasses:FrozenInstanceError 是 AttributeError 的子类?

我正在对新的 python 数据类进行一些自学。

可以传递给数据类装饰器的参数之一是frozen=True,以使对象不可变。

文档(和经验)表明:

将引发异常。

当单元测试时(使用pytest),以下测试通过:

其中 PageURL 是一个带有 freeze=True 参数的数据类。

任何想法为什么 pytest 表明此操作(为 page_url.value 分配值)会引发属性错误?FrozenInstanceError 是否继承自 AttributeError?

注意:如果我更改单元测试以测试不同的异常(即 TypeError),测试会按预期失败。

0 投票
1 回答
835 浏览

python - 如何在 python 中演化数据类?

我有兴趣使用数据类,因为语法比 attr 短。但是,我找不到提供 API 来发展它的快捷方式,例如使用以下代码:

是否容易找到开箱即用的替代品?还是自己实施?

0 投票
1 回答
4601 浏览

python - 如何确定数据类中的字段是否具有默认值或是否已显式设置?

我有一个dataclass我想知道每个字段是否被显式设置或者它是否由default或填充default_factory

我知道我可以使用所有字段dataclasses.fields(...),这可能适用于使用的字段,default但对于使用default_factory.

我的最终目标是合并两个数据类实例AB。而B应该只覆盖A使用默认值的A的字段。

用例是一个可以在多个位置指定的配置对象,其中一些位置的优先级高于其他位置。

编辑:一个例子

我想检测到它conf1.foo正在使用默认值并且conf2.foo&conf3.foo是明确设置的。

0 投票
0 回答
29 浏览

python - 有没有办法输入递归数据类?

假设您有以下数据类

这是不可能的,因为Task尚未声明。

我正在使用 Python 3.6 w/ dacite+dataclasses将大型字典解析为数据类。

目前我一直在这样做:

我想知道是否有办法以subTasks某种方式键入以使其知道它也是一个List[Task]对象,而不是泛型List