博客
关于我
python进阶(7):dataclass数据类使用
阅读量:805 次
发布时间:2023-03-05

本文共 1026 字,大约阅读时间需要 3 分钟。

1 dataclass 简介

Python 3.7 引入了 dataclass 装饰器,可以用来声明 Python 类为数据类。数据类适合用于存储数据,具有以下特点:

  • 数据类表示某种数据类型,数据对象代表特定类的实体,包含实体的属性。
  • 同类型对象可以进行比较,如大于、小于或等于。

dataclass 与普通类的区别

相比于普通类,dataclass 有以下特点:

  • 通常不包含私有属性,这些属性可以直接访问(可选是否私有)。
  • repr() 函数将对象转化为供解释器读取的形式,dataclass 的 repr 方法通常有固定格式,会打印类名、属性名及属性值。
  • 内置了 __eq__、__hash__ 等魔法方法。
  • 具有模式单一固定的构造方式,有时需要重载运算符,而普通类通常无需这些工作。
  • 注:namedtuple 是 tuple 的子类,其元素是有命名的。

    2 传统类定义

    传统类定义通常需要使用 __init__() 方法来初始化对象。以下是一个普通的 Student 类的例子:

    class Student:  
    def __init__(self, name, age):
    self.name = name
    self.age = age

    通过上述代码,可以创建一个 Student 实例,如下所示:

    student = Student('张三', 15)  
    print(student.name) # 张三
    print(student.age) # 15

    3 dataclasses 方法

    dataclass 模块可以帮助开发者在编写 Python 类时节省大量时间。以下是一个使用 dataclass 的 Student 类的示例:

    from dataclasses import dataclass  
    @dataclass
    class Student:
    name: str
    age: int

    通过上述代码,可以创建一个 Student 实例,如下所示:

    student = Student('张三', 15)  
    print(student.name) # 张三
    print(student.age) # 15

    dataclass 的优势在于可以直接定义属性,无需手动实现 __init__() 方法。dataclasses 模块是 Python 标准库的一部分,无需额外安装即可使用。

    转载地址:http://cpafk.baihongyu.com/

    你可能感兴趣的文章
    Python subprocess.Popen() 等待完成
    查看>>
    Python Sympy模块NoConversion:收敛到根失败;请尝试n<;15或MaxSteps>;50
    查看>>
    python time模块
    查看>>
    Python Tkinter Multiple Windows 教程
    查看>>
    Python tkinter 中的多处理
    查看>>
    Python tweepy写入到sqlite3 db
    查看>>
    Python TypeError:格式字符串的参数不足
    查看>>
    Python UI自动化测试Page Objects企业级实战
    查看>>
    python谷歌翻译,2021年9月10日亲测可用,一次可以翻译十万,强烈star
    查看>>
    Python UI自动化测试数据驱动实战
    查看>>
    Python UI自动化测试集成UnitTest
    查看>>
    Python UI自动化测试集成UnitTest
    查看>>
    python unicode-escape
    查看>>
    Python unittest mock:是否可以在测试时模拟方法默认参数的值?
    查看>>
    Python unittest单元测试框架 TestSuite测试套件
    查看>>
    PYTHON调离线语音合成并实时播放
    查看>>
    python unittest高级特性!
    查看>>
    Python unittest:如何将标准输出消息临时重定向到缓冲区并测试其内容?
    查看>>
    Python urllib/Requests下载文件失败,但浏览器下载失败
    查看>>
    Python urllib2 文件上传问题
    查看>>