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 - 字串方法與布林方法介紹,這幾個是最基本的訂製方法,其他包括更多的訂製方法,請參考底下官方文件的連結。

參考資料

上一頁 單元 59 - 靜態方法
回 Python 簡易手冊 首頁
下一頁 單元 61 - 封裝
回 Python 教材首頁
回程式語言教材首頁