Python数据类革命:用@dataclass解放你的双手
Python @dataclass
极简指南
📌 核心功能
@dataclass
是 Python 3.7+ 的装饰器,可自动化生成以下类方法:
__init__
、__repr__
、__eq__
,专为数据存储类设计。
适用场景:参数配置、DTO对象、简单数据模型。
🚀 基础用法
定义类
from dataclasses import dataclass
@dataclass
class User:
name: str # 必填字段
age: int = 18 # 带默认值的字段
active: bool = True
自动获得的能力
u1 = User("Alice") # 自动生成构造方法
print(u1) # 输出: User(name='Alice', age=18, active=True)
u2 = User("Alice")
print(u1 == u2) # True (自动对比所有字段值)
⚠️ 必需知识
1. 字段声明规则
@dataclass
class Demo:
a: str # ✅ 无默认值的字段必须在前
b: int = 0
# c: float # ❌ 错误!缺失类型注解
2. 防御可变默认值
@dataclass
class Node:
# 错误:所有实例共享同一个列表
# children: list = []
# 正确:为每个实例创建独立列表
children: list = field(default_factory=list)
💡 核心价值
场景 | 传统类代码量 | 数据类代码量 |
---|---|---|
定义含10个字段的类 | ~50行 | 10行 |
新增字段维护点 | 4处 | 1处 |
📖 扩展学习
推荐教学视频:
《Python数据类终极指南》