dataclass 与 pathlib:现代化 Python
用 dataclass 定义数据类,用 pathlib 处理文件路径
- 掌握 @dataclass 装饰器的用法
- 学会 field() 的常用参数
- 用 pathlib 替代 os.path
- 了解现代 Python 的编码风格
为什么需要 dataclass?
传统的类要手写 __init__、__repr__、__eq__,太繁琐。@dataclass 自动生成这些方法,不用你管,专注数据就行。
field() 高级用法
dataclass 可变、有默认值、可继承;NamedTuple 不可变、更省内存、支持解包;dict 最灵活但没有属性访问。数据结构固定时优先用 dataclass。
pathlib:面向对象的路径操作
os.path 是字符串拼接的方式,容易出错。pathlib 用对象表示路径,更直观、跨平台。
Python 3.4+ 内置,官方文档和新项目都推荐用 pathlib 替代 os.path。它自动处理 Windows/Unix 路径差异。唯一的例外是需要和某些只接受字符串的旧库交互时,用 str(path) 转换。
小测验
@dataclass(order=True) 的作用是?
from pathlib import Path
p = Path("/a/b/c.txt")
print(p.stem)资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
内层函数(或 lambda)捕获的是外层变量本身,而不是定义那一刻的值;循环里定义的多个函数,循环结束后调用往往都拿到最后的值。解决办法是用默认参数 f(x=x) 立即绑定,或用工厂函数包一层。配合 LEGB 作用域顺序(局部→外层→全局→内建)理解,90% 的作用域谜题都能解开。
挑战任务
文件整理工具
用 pathlib 写一个文件整理函数:按扩展名分类移动文件到对应子目录。
课后作业
配置管理器
用 dataclass 定义 AppConfig 类,包含 host、port、debug、features 列表。支持从字典创建,能序列化为字典。