Python 数据类
Dataclasses 是 Python 类,但更适合存储数据对象。 此模块提供了一个装饰器和函数,用于自动向用户定义的类添加生成的特殊方法,例如 __init__() 和 __repr__()。
特性
它们存储数据并代表某种数据类型。例如:一个数字。对于熟悉 ORM 的人来说,模型实例是一个数据对象。它代表特定类型的实体。它包含定义或表示该实体的属性。
它们可以与相同类型的其他对象进行比较。例如:一个数字可以大于、小于或等于另一个数字。
Python 3.7 提供了一个装饰器 dataclass,用于将类转换为数据类。
class Number:
def __init__(self, val):
self.val = val
obj = Number(2)
obj.val
2
使用数据类
# Dataclass: 自动生成 __init__ 和 __repr__ 方法
from dataclasses import dataclass
@dataclass # 装饰器将类转换为数据类
class Number:
val: int # 必须提供类型注解
obj = Number(2) # __init__ 自动创建
obj.val
2
默认值
可以轻松地为数据类的字段添加默认值。
# 带有默认值的数据类:带有默认值的字段必须放在没有默认值的字段之后
@dataclass
class Product:
name: str # 必需字段
count: int = 0 # 带有默认值的可选字段
price: float = 0.0 # 带有默认值的可选字段
obj = Product("Python") # 只需要 name,其他使用默认值
obj.name
Python
obj.count
0
obj.price
0.0
测验
登录后即可答题并追踪学习进度
在数据类中,带有默认值的字段必须放在哪里?
A. 放在没有默认值的字段之前
B. 放在没有默认值的字段之后
C. 哪里都行
D. 在一个单独的部分
类型提示
在数据类中定义数据类型是强制性的。但是,如果您不想指定数据类型,请使用 typing.Any。
from dataclasses import dataclass
from typing import Any
@dataclass
class WithoutExplicitTypes:
name: Any
value: Any = 42