尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Python 装饰器:@dataclass(一)
一、dataclassdataclass是 Python 3.7 引入的一个装饰器用于自动生成类的样板代码。只需要声明字段和类型它自动生成自动生成说明__init__构造方法__repr__字符串表示__eq__相等比较from dataclasses import dataclass dataclass class User: name: str age: int email: str # 自动生成 __init__可以直接创建实例 u User(Alice, 25) print(u) # User(nameAlice, age25, email) print(u User(Alice, 25)) # True如果没有dataclass需要手写class User: def __init__(self, name, age, email): self.name name self.age age self.email email def __repr__(self): return fUser(name{self.name!r}, age{self.age!r}, email{self.email!r}) def __eq__(self, other): if not isinstance(other, User): return NotImplemented return (self.name, self.age, self.email) (other.name, other.age, other.email)dataclass把上面这些样板代码全省了。二、基本语法from dataclasses import dataclass dataclass class 类名: 字段名: 类型 字段名: 类型 默认值规则字段必须有类型注解有默认值的字段必须放在无默认值字段的后面支持所有 Python 类型int、str、list、自定义类等dataclass class Product: name: str # 必填 price: float # 必填 stock: int 0 # 默认值 tags: list None # 默认值可变对象要用 field后面讲三、自动生成的方法1.__init__dataclass class Point: x: int y: int p Point(1, 2) # 自动生成的 __init__(self, x, y) print(p.x, p.y) # 1 22.__repr__p Point(1, 2) print(p) # Point(x1, y2)调试时非常方便不用手动写__repr__。3.__eq__p1 Point(1, 2) p2 Point(1, 2) p3 Point(3, 4) print(p1 p2) # True逐字段比较 print(p1 p3) # False默认按字段值比较而不是按引用这跟普通类不同。四、dataclass的参数dataclass( initTrue, # 是否生成 __init__ reprTrue, # 是否生成 __repr__ eqTrue, # 是否生成 __eq__ orderFalse, # 是否生成比较方法, , , unsafe_hashFalse, # 是否生成 __hash__ frozenFalse # 是否不可变 ) class MyClass: ...参数默认值说明initTrue生成__init__reprTrue生成__repr__eqTrue生成__eq__orderFalse生成、、、unsafe_hashFalse生成__hash__frozenFalse实例不可变常用组合# 只读数据类 dataclass(frozenTrue) class Config: host: str port: int # 可排序的数据类 dataclass(orderTrue) class Student: score: int name: str五、默认值1. 简单默认值dataclass class User: name: str age: int 18 is_active: bool True2. 可变默认值# 错误所有实例共享同一个列表 dataclass class Bad: items: list [] # 报错信息 # ValueError: mutable default class list for field items is not allowed原因可变对象作为默认值会导致所有实例共享同一个对象。正确做法用field(default_factory...)from dataclasses import dataclass, field dataclass class Good: items: list field(default_factorylist) tags: dict field(default_factorydict) names: set field(default_factoryset) g1 Good() g2 Good() g1.items.append(1) print(g2.items) # []g2 不受影响说明list、dict、set等可变对象默认值一律用field(default_factory...)
RELATED

相关推荐

地表最强AI

地表最强AI

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/21 2:30:45
page_alloc zone_spans_last_pfn

page_alloc zone_spans_last_pfn

zone_spans_last_pfn() 是 alloc_contig_pages() 在扫描候选 PFN 范围时用于边界检查的辅助函数。它判断一个从 start_pfn 开始、长度为 nr_pages 的范围,其最后一页是否仍然落在指定的 zone 内。核心实现static bool zone_spans_last_pfn(const struct zone *zone,…

📅 2026/10/21 2:30:45
华东师大:从单纯堆环境到系统级自我进化

华东师大:从单纯堆环境到系统级自我进化

📖标题:WEFT: Scaling Tool-Use Post-Training for General-Purpose Agents 🌐来源:arXiv, 2609.36887v1 🛎️文章简介 🔸研究问题:如何在不只是简单增加可执行环境数量的情况下,通过优化整个代理交互系统来提升大模型使用工具的能力? 🔸主要贡献:论文提出了W…

📅 2026/10/21 2:30:45
MORE NEWS

更多资讯

📰

VS Code高效开发指南:工作区、多光标与调试技巧

1. 第一次使用就该搞懂的工作区概念:文件夹与.code-workspace很多人上手VS Code,习惯就是点击"文件-打开文件夹",把一个项目目录拖进窗口就开始写代码。这个流程对单仓库项目完全没问题,直到你开始同时维护多个仓库、前…

📰

统信UOS服务器部署OpenClaw AI Agent完整避坑手册

刚在一台统信 UOS V2500 服务器上把 OpenClaw AI Agent 完整跑通,前后踩了大大小小七八个坑,这里把整个安装部署过程整理成一份可照着抄的手册。UOS 服务器版和常见的 x86 发行版不太一样,尤其涉及 Python 版本、动态库、编译工具链这几块&am…

📰

Kubernetes生产实战:HPA自动扩缩容与Helm编排实践

1. 先搞清楚这两个东西到底在解决什么问题1.1 扩容这件事,为什么不能靠手点我见过太多团队在 Kubernetes 上跑业务,第一年风平浪静,第二年一到流量高峰就全员进入“备战状态”。运维盯着 Grafana 看流量,流量一涨立刻 kubectl sca…

📰

HPA与Helm实战:Kubernetes自动扩缩容与模板化部署

如果你负责维护一个 Kubernetes 集群,或者正打算把业务往容器平台上迁移,那么 HPA 和 Helm 这两样东西早晚会一起出现在你的工作清单里。HPA 干的事情比较纯粹:让应用的副本数跟着流量自动变化,流量大了自动扩容,闲下来…

📰

单周期RISC-V CPU设计:Vivado实战与FPGA落地指南

简介:本资源是一套基于Verilog实现的单周期CPU完整FPGA设计工程,面向数字电路、计算机组成原理课程学习者及FPGA初学者,旨在通过可综合、可仿真的真实项目,直观呈现取指、译码、执行、写回等CPU核心流程,解决教学中抽象…

📰

用GDAL实现遥感影像裁剪:从范围裁剪到批量处理实战

搞遥感影像处理的人,迟早都会碰到影像裁剪这个需求。无论是从一幅标准景影像里切出研究区,还是按行政区边界做镶嵌裁剪,抑或是给深度学习模型准备训练切片,这一步几乎绕不开。GDAL 是我这些年用得最顺手的工具,没有之一…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬