当前位置: 首页 > news >正文

Python 数据类 - dataclass 的作用与不足

https://docs.python.org/zh-cn/3/library/dataclasses.html
https://peps.python.org/pep-0526/
https://peps.python.org/pep-0557/

dataclass 简单示例

from dataclasses import dataclass@dataclass
class User:name: strage: intif __name__ == '__main__':response_json = {'name': 'python', 'age': 32}user = User(**response_json)print(user.name, user.age)  # python 32

不用使用 dataclass 也可以

class User:def __init__(self, name: str, age: int):self.name = nameself.age = ageif __name__ == '__main__':response_json = {'name': 'python', 'age': 32}user = User(**response_json)print(user.name, user.age)

User 显得稍显麻烦,不过这里很简单,倒也无所谓。

dataclass 优势

  1. dataclass 比直接使用 class 书写更简洁, 看起来一目了然
  2. dataclass 自动实现实用方法,比如 __repr__
  3. Pycharm 的完全代码提示

dataclass 的不足

不支持嵌套

from dataclasses import dataclass@dataclass
class Info:sex: strphone: straddress: str = None@dataclass
class User:name: strage: intinfo: Info = Noneif __name__ == '__main__':response_json = {'name': 'python','age': 32,'info': {'sex': '','phone': '','address': 'https://python.org/'},}user = User(**response_json)# 显然这里我们期望的不是 dictassert isinstance(user.info, dict)

不支持扩展字段

from dataclasses import dataclass@dataclass
class User:name: strage: intif __name__ == '__main__':response_json = {'name': 'python','age': 32,'address': 'https://python.org/'}# TypeError: __init__() got an unexpected keyword argument 'address'user = User(**response_json)

使用 datclass 库弥补这些不足

https://github.com/foyoux/datclass

pip install datclass

datclass 简单示例

from dataclasses import dataclassfrom datclass import DatClass@dataclass
class Info(DatClass):sex: strphone: straddress: str = None@dataclass
class User(DatClass):name: strage: intinfo: Info = Noneif __name__ == '__main__':response_json = {'name': 'python','age': 32,'info': {'sex': '','phone': '','address': 'https://python.org/','field': 'extra'},}user = User(**response_json)assert isinstance(user.info, Info)assert isinstance(user.info, Info)print(user.info.address)  # https://python.org/

datclass 附带一个命令行命令用以自动生成 DatClass → datclass

相关文章:

Python 数据类 - dataclass 的作用与不足

https://docs.python.org/zh-cn/3/library/dataclasses.html https://peps.python.org/pep-0526/ https://peps.python.org/pep-0557/ dataclass 简单示例 from dataclasses import dataclassdataclass class User:name: strage: intif __name__ __main__:response_json {na…...

【C++初阶】类与对象(一)

目录 1、初识面向对象思想2、类 struct2.1 C中的struct及使用 3、类 class3.1 类的定义3.2 类的访问限定符3.2.1 访问限定符是什么3.2.2 访问限定符的使用3.2.3 访问限定符的使用规范3.2.4 访问限定符与封装 3.3 类做声明和定义分离3.3.1 声明和定义分离3.3.2 在函数声明的地方…...

thinkPHP框架详解+部署

目录 什么是ThinkPHP: ThinkPHP的主要特性: 什么是ThinkPHP: ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,由国内的技术爱好者创建,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和…...

Java拦截器(Interceptor)和过滤器(Filter)实例详解

一、Java过滤器和拦截器 1.1、过滤器(Filter) Filter过滤器,是Servlet(Server Applet)技术中的技术,开发人员可以通过Filter技术,管理web资源,可以对指定的一些行为进行拦截,例如URL级别的权限…...

通过热敏电阻计算温度(二)---ODrive实现分析

文章目录 通过热敏电阻计算温度(二)---ODrive实现分析测量原理图计算分析计算拟合的多项式系数根据多项式方程计算温度的函数温度计算调用函数 通过热敏电阻计算温度(二)—ODrive实现分析 ODrive计算热敏电阻的温度采用的时B值的…...

基于typescript+express实现一个简单的接口权限验证

package.json "scripts": {"start": "nodemon src/main.ts","start:a": "nodemon src/a.ts","build": "tsc","build:dev": "tsc src/main.ts"}, express服务器文件 import * as…...

yolov7改进优化之蒸馏(二)

续yolov7改进优化之蒸馏(一)-CSDN博客 上一篇已经基本写出来yolov7/v5蒸馏的整个过程,不过要真的训起来我们还需要进行一些修改。 Model修改 蒸馏需要对teacher和student网络的特征层进行loss计算,因此我们forward时要能够返回需…...

生产与作业管理(POM)的历史

1800年,惠特尼:零件标准化、质量管理。 1881年,泰勒:人员选拔、计划和时程安排、动作研究。管理与劳动分开。 - 使雇员与工作相适应。 - 提供适当的训练。 - 提供正确的工作方法和工具。 - 建立适当的激励机制促使工作得以完成。 …...

交换机基础(二)

一、VLAN 基础知识 虚拟局域网 (Virtual Local Area Network,VLAN) 是一种将局域网设 备从逻辑上划分成一个个网段,从而实现虚拟工作组的数据交换技术。 这一技术主要应用于3层交换机和路由器中,但主流应用还是在3层交换机中。 VLAN 是基于物理网络上构建…...

回归预测 | MATLAB实现基于BP-Adaboost的BP神经网络结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于BP-Adaboost的BP神经网络结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于BP-Adaboost的BP神经网络结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于BP-Adaboost的BP…...

【蓝桥每日一题]-动态规划 (保姆级教程 篇11)#方格取数2.0 #传纸条

目录 题目:方格取数 思路: 题目:传纸条 思路: 题目:方格取数 (跑两次) 思路: 如果记录一种方案后再去跑另一个方案,影响因素太多了,所以两个方案要同时开…...

前端TypeScript学习day05-索引签名、映射与类型声明文件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 索引签名类型 映射类型 索引查询(访问)类型 基本使用 同时查询多个索引的类型…...

Echarts柱状图数据过多设置滚动条效果

未设置前: 设置后: dataZoom: [ { show: true, height:8, bottom:0, startValue: 0, //起始值 endValue: 5, //结束值 showDetail: fals…...

64 最长公共子序列

最长公共子序列 题解1 DP 给定两个字符串 text1 和 text2,返回这两个字符串的 最长公共子序列的长度。如果不存在 公共子序列,返回 0 。 一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些…...

matlab常用函数

绘图函数 一、plot():二维图形绘制 1、plot(y): 对于只含一个输入参数的plot函数,如果输入参数y为向量,则以该参数为纵坐标,横坐标从1开始至与向量的长度相等;如果输入参数y是矩阵时,则按列绘…...

Python配置镜像源

Python3安装pika的准备 Windows下配置镜像源可以按照如下操作。 1.winR执行%APPDATA% %APPDATA%后,创建pip文件夹,并创建pip.ini配置文件 查看此目录下是否有pip目录,如果没有则需要创建,并在pip目录下以文本方式添加pip.ini文件…...

Linux防火墙Centos6的常用命令iptables

文章目录 一、iptables基础知识二、作者玩玩的配置文件三、iptables中常用的参数以及作用-j参数的动作类型 四、安装iptables五、iptables启动命令六、iptables命令结构命令例子默认执行方式执行iptables命令和写入配置文件两种方式的对比 相对常用的命令参考文档 一、iptables…...

python中的贪心算法-求顾客的最小的等待时间

一. 设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti(1<i<n)。如何安排n个顾客的服务次序才能使顾客总的等待时间达到最小? nint(input(请输入顾客的位数: ))times[] for i in range(n):timeint(input(f请输入顾客{i1}的服务时间: ))times.append(time) times.so…...

【JAVA springframework.http】如何发送HTTP请求

Springboot之restTemplate https://blog.csdn.net/weixin_43702146/article/details/116567707 public Result doHandlePostJson(String restUri, String jsonData)throws Exception {Result result null;try {// logger记录log.info("doHandlePostJson request restUr…...

字符串反转(Python)

1. 整体流程 为了实现递归反转n个字符串的功能&#xff0c;我们可以按照以下步骤进行操作&#xff1a; 步骤动作1定义递归函数2判断递归结束条件3处理递归函数的基本情况4调用递归函数&#xff0c;递归处理子问题5返回递归结果 我将详细解释每一步的具体操作&#xff0c;并提…...

AI原生大数据架构迁移避坑指南(含奇点大会实测的6类典型失败场景、ROI测算模板与12周渐进式演进路线图)

第一章&#xff1a;AI原生大数据架构迁移避坑指南总览 2026奇点智能技术大会(https://ml-summit.org) AI原生大数据架构迁移不是简单的组件替换&#xff0c;而是数据范式、计算语义与工程治理的系统性重构。传统ETL流水线在面对LLM微调数据准备、向量实时索引、多模态特征联合…...

哥本哈士奇(aspnetx)固

简介 langchain中提供的chain链组件&#xff0c;能够帮助我门快速的实现各个组件的流水线式的调用&#xff0c;和模型的问答 Chain链的组成 根据查阅的资料&#xff0c;langchain的chain链结构如下&#xff1a; $$Input \rightarrow Prompt \rightarrow Model \rightarrow …...

一物一码系统怎么搭建?从0到1的完整实施路径与避坑指南

在数字化转型浪潮中&#xff0c;一物一码已从"锦上添花"变为企业基础设施。但市面上方案繁杂&#xff0c;企业自建常陷入"技术选型迷茫"和"业务落地困难"。本文基于顶讯科技一物一码平台的底层架构逻辑&#xff0c;拆解系统搭建的完整路径&#…...

cmake之旅(11)

cmake之旅&#xff08;11&#xff09; cmake之旅&#xff08;11&#xff09;&#xff1a;交叉编译与工具链文件1 什么是交叉编译2 交叉编译的前提&#xff1a;安装交叉编译工具链3 工具链文件3.1 基本结构3.2 关键变量说明 4 使用工具链文件5 实战&#xff1a;为树莓派交叉编译…...

MusePublic生态扩展:与ControlNet兼容性验证及姿态控制实测

MusePublic生态扩展&#xff1a;与ControlNet兼容性验证及姿态控制实测 1. 项目背景与测试目标 MusePublic作为专为艺术人像创作设计的轻量化文本生成图像系统&#xff0c;已经在艺术感时尚人像生成方面展现出优异的表现。但在实际创作过程中&#xff0c;用户往往需要更精确的…...

Maccy:重新定义macOS剪贴板管理效率的3个核心维度

Maccy&#xff1a;重新定义macOS剪贴板管理效率的3个核心维度 【免费下载链接】Maccy Lightweight clipboard manager for macOS 项目地址: https://gitcode.com/gh_mirrors/ma/Maccy 在日常的数字工作流程中&#xff0c;剪贴板是我们最频繁使用的工具之一&#xff0c;但…...

从零构建差速机器人MPC控制器:C++实现与OSQP实战

1. 差速机器人MPC控制入门指南 第一次接触差速机器人控制时&#xff0c;我被各种数学公式和算法绕得头晕。直到发现MPC&#xff08;模型预测控制&#xff09;这个神器&#xff0c;才真正体会到什么叫"用未来指导现在"的控制方法。简单来说&#xff0c;MPC就像下棋时提…...

VLA 在微调之后,能遗忘到什么程度?上交CVPR‘26的工作给出了答案

点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 戳我-> 领取自动驾驶近30个方向学习路线 作者 | Runhao Mao等 编辑 | 自动驾驶之心 本文只做学术分享&#xff0c;如有侵权&#xff0c;联系删文 >>自动驾驶前沿信息获取→自动驾驶之心知识星球 当自动驾驶技术逐…...

郭老师-如何判断一个人有没有领导力

如何判断一个人有没有领导力 ——从魅力到思想力的四重修炼“真正的领导力&#xff0c; 不在于个人魅力&#xff0c; 而在于—— 带领团队做出成绩&#xff0c; 赢得信任&#xff0c; 并拥有清晰的战略思想。”&#x1f33f; 领导力的核心&#xff0c; 是绩效导向&#xff0c; …...

告别官方API:手把手教你从零封装YOLOv8-Pose的推理代码(附完整Python脚本)

深度解构YOLOv8-Pose&#xff1a;从底层实现自主可控的推理引擎 在计算机视觉领域&#xff0c;姿态估计技术正经历着前所未有的发展浪潮。作为YOLO系列的最新力作&#xff0c;YOLOv8-Pose凭借其卓越的性能和高效的推理速度&#xff0c;迅速成为工业界和学术界的热门选择。然而&…...