全文共2607字,预计学习时长14分钟
数据类适用于Python3.7或更高版本,它不仅可以用作数据容器,还可以编写样板代码,简化创建类的过程。
创建第一个数据类
创建一个数据类,该数据类表示三维坐标系中的一个点。
@dataclass装饰器用于创建数据类。x,y和z是数据类中的字段。注意要使用类型注释来指定字段的数据类型,但是类型注释不是静态类型声明,这意味着仍然可以为x,y或z字段传递除int之外的任何数据类型。
from dataclasses import dataclass @dataclass classCoordinate: x: int y: int z: int
默认情况下,数据类附带有init、repr和 eq方法,因此我们不必自己实现。但是如果init、repr和eq没有在Coordinate类中实现,有了数据类,我们仍然可以使用这些方法,这样非常节省时间。
from dataclasses import dataclass @dataclass classCoordinate: x: int y: int z: int a =Coordinate(4, 5, 3) print(a) # output: Coordinate(x=4, y=5, z=3)
字段的默认值
编码者可以为字段分配默认值。如下所示,数据类中的pi字段被分配了默认值:
from dataclasses import dataclass @dataclass classCircleArea: r: int pi: float =3.14 @property defarea(self): return self.pi * (self.r **2) a =CircleArea(2) print(repr(a)) # output: CircleArea(r=2, pi=3.14) print(a.area) # output: 12.56