python笔记:dataclass

2024-05-04 10:04
文章标签 python 笔记 dataclass

本文主要是介绍python笔记:dataclass,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 引子:其他类似实现方法的局限性

假设我们现在需要实现这样的内容:

nameChina
area960
population140967

1.1 tuple/list

country1_tuple=('China','960','140967')
country1_tuple[0]
#'China'

缺点:需要记住各个属性是list/tuple第几位的属性(基于位置)

1.2 字典

country1_dict={'name':'China','area':960,'population':140967}
country1_dict['name']
#'China'
  • 不足
    • 不能用country1_dict.name的形式进行控制
    • 少值【country1_dict={'name':'China', 'area':960】一样可以创建成功

1.3 namedtuple

python 库整理: collections.namedtuple_python collections.namedtuple创建一个-CSDN博客

from collections import namedtupleCountry=namedtuple('Country1',['name','area','population'])country1=Country('China',960,'140967')
country2=Country('Singapore',733,564)country1
#Country1(name='China', area=960, population='140967')country2.name
#'Singapore'
  • 弥补了字典的两个缺点
    • 可以用country2.name的形式
    • 少值会报错
  • 不足
    • 无法修改值

1.4 自定义类

class Country:def __init__(self,name,area,population):self.name=nameself.area=areaself.population=populationcountry1_class=Country('China',960,140967)
country1_class.name
#'China'country1_class.name="PRC"
  • 解决了namedtuple无法修改值的问题
  • 不足:
    • __init__方法中重复代码 (示例中每个属性都需要写3遍)

2 数据类dataclass

  • 提供了一个简写__init__方法的语法糖. 
  • 类型注释是必填项
  • 默认值的传递方式和__init__方法的参数格式一致
from dataclasses import dataclass@dataclass
class Country_dc:name:strarea:intpopulation:int=40country_dc1=Country_dc('China',960,140967)
country_dc2=Country_dc('Singapore',733)country_dc1
#Country_dc(name='China', area=960, population=140967)country_dc2
#Country_dc(name='Singapore', area=733, population=40)

2.1 数据嵌套

from typing import List@dataclass
class Countrys_dc:name:strcountries:List[Country_dc]
country_lst=Countrys_dc('China & SG',[country_dc1,country_dc2])
country_lst
'''
Countrys_dc(name='China & SG', countries=[Country_dc(name='China', area=960, population=140967), Country_dc(name='Singapore', area=733, population=40)])
'''

2.2 数据类不可变

 要使数据类不可变,需要在创建类时设置frozen=True。

参考内容:Python中的数据类dataclass详解_python dataclass-CSDN博客

这篇关于python笔记:dataclass的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958937

相关文章

一文教你使用Python实现本地分页

《一文教你使用Python实现本地分页》这篇文章主要为大家详细介绍了Python如何实现本地分页的算法,主要针对二级数据结构,文中的示例代码简洁易懂,有需要的小伙伴可以了解下... 在项目开发的过程中,遇到分页的第一页就展示大量的数据,导致前端列表加载展示的速度慢,所以需要在本地加入分页处理,把所有数据先放

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python