【我們為什麼挑選這篇文章】Python 是目前世界上的熱門程式語言之一,而本文整理了幾個 Python 數據庫的原理與注意事項,希望這些簡單但實用的小知識可以幫助正在學習 Python 的大家。(責任編輯:林厚勳)
這一篇是 Dataclass 的特徵概述。
Dataclasses 是一些適合於儲存數據對象(data object)的 Python 類。你可能會問,什麼是數據對象?下面是一個並不詳盡的用於定義數據對象的特徵列表:
他們存儲並表示特定的數據類型。例如:一個數字。對於那些熟悉對象關係映射(Object Relational Mapping,簡稱 ORM)的人來說,一個模型實例就是一個數據對象。它表示了一種特定類型的實體。它儲存了用於定義或表示那種實體的屬性。
他們能夠被用於和同類型的其他對象進行比較。例如,一個數字可能大於,小於或等於另一個數字。
當然數據對象還有更多的特徵,但上述內容足以幫助你理解關鍵部分。
為了理解 Dataclases,我們將實現一個簡單的類。它能夠存儲一個數字,並允許我們執行上面提到的各種運算。
首先,我們將使用普通的類,然後我們使用 Dataclasses 來實現相同的結果。
但是在我們開始之前,還是要提一下 Dataclasses 的用法。
Python 3.7 提供了一個裝飾器 dataclass,用以把一個類轉化為 dataclass。
你需要做的就是把類包裹進裝飾器裡:
現在,讓我們進一步瞭解 dataclass 的用法,以及它能為我們改變什麼。
初始化
使用 dataclass
以下是使用了 dataclass 裝飾器之後的變化:
1. 不必定義_init_然後再賦值給 self,裝飾器會注意這一點
2. 我們用一種更可讀的方式定義成員屬性,並帶有類型提示(type hinting)。我們現在立刻就知道 val 的類型是 int。這種方式當然比通常的定義方法可讀性更好。
Python 之道:可讀性很重要
也可以定義默認值:
對象表示是一種對象的字符串表示法,在調試時非常有用。
默認的 Python 對象表示不是非常的有用:
這種表示法不能給我們對象用途的提示,同時將導致可怕的調試經歷。
一種有意義的表示法可以通過在類定義裡,添加一種_repr_方法實現。
dataclass 會自動添加一個_repr_函數,因此我們不必手動實現它了。
數據比較
通常,數據對象會伴隨著相互比較的需要。兩個對象’a’ 和’b’ 之間通常包含以下的運算:
a < b
a > b
a == b
a >= b
a <= b
在 Python 裡,可以通過在類中定義一些方法來實現上述運算。為了保證整篇文章的簡潔性,我將只實現 == 和 < 。
─ ─
(本文經 雷鋒網 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈 理解 Python 數據類(上) 〉。)
其他你或許會想知道的 Python 知識
為什麼 Python 這麼慢?比其他程式語言慢十倍的病根就在「全局解釋器鎖」
美國工程師花一週寫 Python,用一支機械手臂毀了「威利在哪裡?」這個遊戲
《經濟學人》專文探討:「為什麼 Python 是世上最屌的程式語言?」
【工程師共通壞毛病】用 Python 做數據科學時容易忘記的八個要點,你記得嗎?
CIO 雲端資料管理必殺技
– 全自動化雲端資料庫升級 know how
– 利用機器學習提升資料庫管理效率
– 美國電信商 AT&T IT 管理秘技,優化企業 IT 管理的生產力!
領取 資料庫升級 COMBO 包