Python中dataclass背景说明

一、背景

@dataclass 装饰器是 Python 3.7 新增的,它可以用来轻松地创建数据类(dataclass)。简单来说,就是你定义一个很普通的类,@dataclass 装饰器可以帮你生成 __repr____init__ 等方法【special method(即:特殊方法)】,就不用自己再写一遍了。

二、解决的问题

1、简化数据类的定义。使用 @dataclass 可以不必定义 init 方法和类似 eq 这样的方法,它会自动为我们添加。

2、数据类更易于使用。拥有默认的 repr 方法,可以Print调试,eq 方法可以判断两个对象是否相等等。

3、数据类更健壮。添加新字段不会影响现有代码,因为会自动添加到 init 方法。

举个例子,我们定义一个 User 数据类:

python
from dataclasses import dataclass

@dataclass
class User:
    username: str
    age: int

这相当于:

python

class User:
    def __init__(self, username, age):
        self.username = username
        self.age = age
        
    def __repr__(self):
        return f'User(username={self.username}, age={self.age})'

但是使用 @dataclass 我们无需定义 initrepr 等方法。

所以如果你需要构建一些简单的存放数据的类@dataclass 是一个非常推荐的装饰器。它可以彻底简化数据类的定义和使用,这也是它被添加到 Python 中的初衷。

三、参考

1、知乎:https://zhuanlan.zhihu.com/p/419778289

2、官方:https://docs.python.org/3/library/dataclasses.html

posted @ 2023-04-27 11:12  xyztank  阅读(65)  评论(0编辑  收藏  举报