python @dataclass datetime
dataclass是 Python 自带的一个装饰器dataclasses模块作用是自动帮你生成__init__、__repr__、__eq__等样板代码。不用 dataclass 时class ParseDTOContext: def __init__(self, username: str, file_name: str, file_type: str, ...): self.username username self.file_name file_name self.file_type file_type # ... 几十个字段用了 dataclass 后dataclass class ParseDTOContext: username: str file_name: str file_type: str # ... 只需要写字段声明__init__ 自动生成property的本质好处说明语法简洁访问时不用加()读起来像数据属性不像方法调用封装逻辑把计算/判断逻辑隐藏在后面调用方不需知道实现细节向后兼容如果一开始是普通属性后来想改成需要计算的值加property即可调用方代码不用改一句话property让你用访问属性的方式执行方法逻辑。当你想让一个方法用起来像属性时就用它。from dataclasses import dataclass from datetime import datetime 因为项目里大量需要在不同模块/步骤之间传递结构化数据解析上下文、分片结果、文档内容等。 用 dataclass 比手写 __init__ 省 80% 的样板代码比用普通 dict 有更好的类型提示和 IDE 补全。 dataclass class Person: name: str age: int def to_dict(self): return { name: self.name, age: self.age } property def information(self): return self.name ,年龄 str(self.age) 岁 if __name__ __main__: p1 Person(Tom, 18) p2 Person(Jay, 20) p3 Person(Sunny, 22) Person(nameTom, age18) Person(nameJay, age20) Person(nameSunny, age22) print(p1, p2, p3) print(p1.to_dict()) 使用Property将方法变成属性直接调用可以忽略运算逻辑 输出结果Tom,年龄18岁 print(p1.information) 2026-07-26 18:22:24.769422 class datetime.datetime print(datetime.now(),type(datetime.now())) 2026-07-26T18:21:40.532757 class str str_with_T_time datetime.isoformat(datetime.now()) print(str_with_T_time,type(str_with_T_time)) 2026-07-26 18:20:43 class str time_str datetime.strftime(datetime.now(), %Y-%m-%d %H:%M:%S) print(time_str,type(time_str))