![](../../img/interpret.jpg)
Python 簡易手冊
單元 60 - 資料類別與資料模型
資料類別 (data class) 與資料模型 (data model) 雖然都以資料 (data) 為名,但兩者是不同事情。資料類別是一種特殊的類別 (class) ,簡單說是用來在程式中取得資料庫 (database) 中的資料而簡化定義的類別,簡單舉例如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 引入必要函數 from dataclasses import dataclass # 定義資料類別 @dataclass class Demo: number: int name: str # 建立資料類別 d = Demo(101, "Product 101") # 印出屬性 print(d.number) print(d.name) # 檔名: class_demo18.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 3 月 |
單元 54 - 類別介紹類別的基本概念。
定義資料類別要從標準程式庫 (standard library) 的 dataclsses 引入 dataclass
1 2 | # 引入必要函數 from dataclasses import dataclass |
然後定義資料類別這裡要用到裝飾子 (decorator) @dataclass
4 5 6 7 8 | # 定義資料類別 @dataclass class Demo: number: int name: str |
資料類別就是定義類別屬性 (class attribute) 來接收相對的資料,這些資料由資料類別的建構子 (constructor) 來設定
10 11 12 13 14 | # 建立資料類別 d = Demo(101, "Product 101") # 印出屬性 print(d.number) print(d.name) |
此例執行結果如下
> python class_demo18.py |
101 Product 101 |
> |
由上例可知資料類別是一種特殊需求的類別,而類別有一系列的訂製方法,這些訂製方法組成設計類別的資料模型,以下為基本訂製方法
預設方法 | 說明 |
---|---|
__new__() | 建立新實體物件先呼叫的方法,之後會呼叫 __init__() |
__init__() | 初始化實體物件設定的方法,一般稱作建構子 |
__del__() | 銷毀實體物件執行的方法,一般稱作解構子 |
__repr__() | 實體物件在互動介面的字串表達形式 |
__str__() | 實體物件的字串表達形式 |
__bytes__() | 實體物件的二進制序列表達形式 |
__format__() | 實體物件利用 format() 的字串表達形式 |
__lt__() | 實體物件套用 < 運算子 |
__le__() | 實體物件套用 <= 運算子 |
__eq__() | 實體物件套用 == 運算子 |
__ne__() | 實體物件套用 != 運算子 |
__gt__() | 實體物件套用 > 運算子 |
__ge__() | 實體物件套用 >= 運算子 |
__hash__() | 回傳實體物件的雜湊值 |
__bool__() | 回傳實體物件的布林值 |
以上 __init__() 及 __del__() 在單元 56 - 建構子與解構子介紹, __bool__() 、 __repr__() 、 __str__() 及 __format__() 在單元 57 - 字串方法與布林方法介紹,這幾個是最基本的訂製方法,其他包括更多的訂製方法,請參考底下官方文件的連結。
參考資料
- https://docs.python.org/3/tutorial/classes.html#odds-and-ends
- https://docs.python.org/3/reference/datamodel.html#basic-customization
![](../../img/pydoing.gif)