亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

Python 数据类:一种更好的数据存储方式

Python 数据类是具有 @dataclass 的常规 Python 类 装饰师。它是专门为保存数据而创建的。从 Python 3.7 版开始,Python 通过名为 dataclass 的内置模块提供数据类 .与我们将在本文中探讨的常规 Python 类相比,有几个优点。我们还将查看示例代码和您可能希望对数据类执行的一些常见操作。

目录

<导航>

使用数据类的优势

为什么要使用数据类而不是常规的 Python 类?首先,让我们看看 Python 数据类必须提供的一些优势。

需要最少的代码

@dataclass 装饰器在不添加任何可见代码的情况下为类添加了很多功能。这使您的数据类非常紧凑,同时仍提供许多有用的功能。您需要做的就是定义保存数据的字段。你不需要定义任何函数。

比较

两个Python数据类可以用==比较 因为所谓的dunder方法__eq__是自动实现的。一般来说,我们可以将任何实现此特殊方法的 Python 对象与其他相同类型的对象进行比较。

打印数据类

同样,因为 __repr__ 实现后,您可以打印数据类并获得它的良好表示。这对调试特别有用。

数据类需要类型提示

数据类是围绕 Python 提供的新(ish)类型系统构建的。使用类型提示可以减少代码中出现错误和意外行为的机会。您基本上声明了应该存储在变量中的数据类型。

Python 数据类示例

下面是一个工作中的数据类示例:

from dataclasses import dataclass

@dataclass
class Card:
    rank: str
    suit: str
    
card1 = Card("Q", "hearts")
card2 = Card("Q", "hearts")

print(card1 == card2)
# True

print(card1.rank)
# 'Q'

print(card1)
Card(rank='Q', suit='hearts')

默认值

数据类可以有默认值。分配默认值就像为变量分配值一样简单。例如,要让我们的 Card 类具有红桃皇后的默认值,我们可以这样做:

from dataclasses import dataclass

@dataclass
class Card:
    rank: str = 'Q'
    suit: str = 'hearts'

将数据类转换为 JSON

一个常见的用例是将结构良好的数据类转换为 JSON。例如,如果您想将数据导出到数据库,或将其发送到浏览器。坏消息是:没有将数据类转换为 JSON 的内置方法。

好消息是,有一个名为 dataclasses-json 的 Python 包可以简化任务。但是,它需要一个额外的装饰器。您需要使用 pip install 命令或 Pipenv 之类的命令安装软件包,最好是在虚拟环境中。例如:

$ pip install dataclasses-json

以下是如何使用该包的示例:

from dataclasses import dataclass
from dataclasses_json import dataclass_json

@dataclass_json
@dataclass
class Card:
    rank: str = 'Q'
    suit: str = 'hearts'

card = Card()
print(card.to_json())
{"rank": "Q", "suit": "hearts"}

另一种方法是使用 Python 继承并从 JSONEncoder 类继承来创建自己的自定义编码器。这里的优点是您不需要安装外部包。您可以在这篇博文中了解如何执行此操作。

继续学习


Python

  1. Python 数据类型
  2. Python 类型转换和类型转换
  3. Python 运算符
  4. Python 自定义异常
  5. Python 面向对象编程
  6. Python 继承
  7. 数据中心整合如何改变我们存储数据的方式
  8. Python 中的 type() 和 isinstance() 示例
  9. Java - 数据结构
  10. C++ 中的数据抽象
  11. C++ 中的数据封装
  12. Python - 面向对象