python@dataclass使用

Python 的 dataclass 是 Python 3.7 中引入的一个装饰器和类库,用于自动添加特殊方法,如 __init____repr__,到用户定义的类。dataclass 使得定义类变得更加简洁,同时它也提供了许多有用的特性,比如默认值、类型提示等。

以下是一个 dataclass 的例子:

from dataclasses import dataclass

@dataclass
class InventoryItem:
    name: str
    unit_price: float
    quantity_on_hand: int = 0

    def total_cost(self) -> float:
        return self.unit_price * self.quantity_on_hand

在上面的代码中,我们使用了dataclass装饰器来定义一个名为InventoryItem的类。该类包含三个属性:name、unit_price和quantity_on_hand。其中,quantity_on_hand属性还有一个默认值0。此外,我们还定义了一个名为total_cost()的方法来计算库存项目的总成本。

使用dataclass装饰器可以让我们省去手动编写特殊方法的步骤,从而使代码更加简洁易读。同时,它还提供了一些其他的好处,例如:

自动生成特殊方法,例如__init__()__repr__() 可以使用默认值进行初始化 可以自定义其他方法

你可能会问,为什么不直接使用字典而要使用 dataclass 呢?以下是一些理由:

  1. 类型提示和检查:在 dataclass 中,你可以为每个字段指定类型。这不仅可以帮助你编写更清晰、更易于理解的代码,而且某些 IDE 和工具可以利用这些信息提供更好的自动完成和错误检查功能。

  2. 默认值dataclass 允许你为字段设置默认值,而在字典中,你需要手动检查和设置默认值。

  3. 易于阅读和使用:当你查看一个 dataclass 对象的字符串表示时,你可以清晰地看到它的字段名和值。而对于字典,你只能看到值。

  4. 方法和行为dataclass 是类,因此你可以在其中定义方法。而字典不能有方法。

总的来说,dataclass 提供了比字典更丰富、更强大的功能,使得你的代码更易于编写和维护。如果你只需要存储和检索值,那么字典可能更简单、更快速。但是,如果你需要更复杂的行为和更强的类型检查,那么 dataclass 可能更适合你。​

dataclass还可以让python以更简洁的方式实现c中的结构体操作,代码量和可读性上都有极大提升

使用dataclass构建链表结构示例:

from dataclasses import dataclass
@dataclass
class pp:
    id:int
    next:"pp" #使用双引号括起自定义类类型名

l1=pp(0,None)
l2=pp(1,None)
l1.next = l2
print(l1)
#pp(id=0, next=pp(id=1, next=None))
posted @   咔白耶  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
鄂ICP备2024058921号
点击右上角即可分享
微信分享提示