相关疑难解决方法(0)

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

使用PEP 557,数据类被引入到python标准库中.

他们使用@dataclass装饰器,他们应该是"默认的可变的命名元组",但我不确定我理解这实际意味着什么,以及它们与普通类的区别.

究竟什么是python数据类以及何时最好使用它们?

python class python-3.7 python-dataclasses

82
推荐指数
5
解决办法
3万
查看次数

来自dict的Python数据类

3.7中的标准库可以递归地将数据类转换为dict(来自docs的示例):

from dataclasses import dataclass, asdict
from typing import List

@dataclass
class Point:
     x: int
     y: int

@dataclass
class C:
     mylist: List[Point]

p = Point(10, 20)
assert asdict(p) == {'x': 10, 'y': 20}

c = C([Point(0, 0), Point(10, 4)])
tmp = {'mylist': [{'x': 0, 'y': 0}, {'x': 10, 'y': 4}]}
assert asdict(c) == tmp
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法,在存在嵌套时将字典转回数据类.喜欢的东西,C(**tmp)只有工作,如果数据类的字段是简单类型,而不是自己的数据类.我熟悉jsonpickle,但它带有一个突出的安全警告.

python python-3.x python-dataclasses

38
推荐指数
7
解决办法
1万
查看次数