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 官方文件。