原文:https://zhuanlan.zhihu.com/p/59657729
引言
Dataclasses是一些适合于存储数据对象(data object)的Python类。你可能会问,什么是数据对象?下面是一个并不详尽的用于定义数据对象的特征列表:
他们存储并表示特定的数据类型。例如:一个数字。对于那些熟悉对象关系映射(Object Relational Mapping,简称 ORM)的人来说,一个模型实例就是一个数据对象。它表示了一种特定类型的实体。它存储了用于定义或表示那种实体的属性。
他们能够被用于和同类型的其他对象进行比较。例如,一个数字可能大于,小于或等于另一个数字。
当然数据对象还有更多的特征,但上述内容足以帮助你理解关键部分。
为了理解Dataclases,我们将实现一个简单的类。它能够存储一个数字,并允许我们执行上面提到的各种运算。
首先,我们将使用普通的类,然后我们使用Dataclasses来实现相同的结果。
但是在我们开始之前,还是要提一下Dataclasses的用法。
Python3.7 提供了一个装饰器dataclass,用以把一个类转化为dataclass。
你需要做的就是把类包裹进装饰器里:
from dataclasses import dataclass
@dataclass
class A:
...
现在,让我们深入了解一下 dataclass 带给我们的变化和用途。