Python 中的 dataclass()

Python 3.7 版本中新增了一個 dataclass() 函式,它可以讓開發者更容易地定義和使用資料類別。這個函式可以讓開發者更快速地定義資料類別,並且可以自動產生一些常用的函式,例如 init()、repr()、eq() 等等,讓開發者可以更專注於業務邏輯的開發。

使用 dataclass() 定義資料類別

使用 dataclass() 定義資料類別非常簡單,只需要在類別定義前面加上 @dataclass 裝飾器,並且指定資料類別的屬性,就可以完成資料類別的定義。

@dataclass
class Person:
    name: str
    age: int

上面的程式碼定義了一個 Person 類別,它有兩個屬性:name 和 age,分別是字串和整數。

自動產生的函式

當使用 dataclass() 定義資料類別後,Python 會自動產生一些函式,例如 init()、repr()、eq() 等等,讓開發者可以更專注於業務邏輯的開發。

例如,上面定義的 Person 類別,Python 會自動產生一個 init() 函式,它會接收 name 和 age 兩個參數,並且將它們設定為類別的屬性:

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

另外,Python 還會自動產生一個 repr() 函式,它會回傳一個可以用來重新建立物件的字串:

def __repr__(self):
    return f'Person(name={self.name}, age={self.age})'

最後,Python 還會自動產生一個 eq() 函式,它會比較兩個物件是否相等:

def __eq__(self, other):
    if isinstance(other, Person):
        return self.name == other.name and self.age == other.age
    return NotImplemented

總結

Python 3.7 版本中新增了一個 dataclass() 函式,它可以讓開發者更容易地定義和使用資料類別。使用 dataclass() 定義資料類別非常簡單,只需要在類別定義前面加上 @dataclass 裝飾器,並且指定資料類別的屬性,就可以完成資料類別的定義。當使用 dataclass() 定義資料類別後,Python 會自動產生一些函式,例如 init()、repr()、eq() 等等,讓開發者可以更專注於業務邏輯的開發。

更多資訊

想要了解更多關於 dataclass() 的資訊,可以參考 Python 官方文件

Categorized in:

Tagged in: