Python Data Classes: Sederhanakan Manajemen Data dengan Sintaks Modern
Python data class adalah class Python reguler yang memiliki decorator @dataclass. Ini secara khusus dibuat untuk menyimpan data. Sejak versi Python 3.7, Python menawarkan data classes melalui modul bawaan yang disebut dataclass. Ada beberapa keuntungan dibandingkan class Python reguler yang akan kita jelajahi dalam artikel ini. Kami juga akan melihat contoh kode dan beberapa operasi umum yang mungkin ingin Anda lakukan dengan data classes.
Daftar isi
Keuntungan menggunakan data classes
Mengapa Anda harus menggunakan data class alih-alih class Python reguler? Pertama, mari kita lihat beberapa keuntungan yang ditawarkan oleh Python data class.
Memerlukan jumlah kode yang minimal
Decorator @dataclass menambahkan banyak fungsionalitas ke class tanpa menambahkan kode yang terlihat. Ini memungkinkan data class Anda sangat kompak sambil masih menawarkan banyak fitur berguna. Yang perlu Anda lakukan hanyalah mendefinisikan field untuk menyimpan data Anda. Anda tidak perlu mendefinisikan fungsi apa pun.
Perbandingan
Dua Python data class dapat dibandingkan dengan == karena metode dunder __eq__ yang disebutkan diimplementasikan secara otomatis. Secara umum, kita dapat membandingkan objek Python apa pun yang mengimplementasikan metode khusus ini dengan objek lain dari jenis yang sama.
Mencetak data class
Demikian pula, karena __repr__ diimplementasikan, Anda dapat mencetak data classes dan mendapatkan representasi yang bagus dari itu. Ini sangat berguna untuk debugging.
Data classes memerlukan type hints
Data classes dibangun di sekitar sistem tipe baru(ish) yang ditawarkan Python. Penggunaan type hints mengurangi kemungkinan bug dan perilaku yang tidak diinginkan dalam kode Anda. Anda secara esensial mendeklarasikan tipe data yang harus disimpan dalam variabel.
Data class dapat memiliki nilai default. Menetapkan nilai default sama mudahnya dengan menetapkan nilai ke variabel. Misalnya, untuk membuat class Card kami memiliki nilai default Queen of hearts, kita dapat melakukan sebagai berikut:
from dataclasses import dataclass @dataclass class Card: rank: str = 'Q' suit: str = 'hearts'
Mengonversi data class ke JSON
Kasus penggunaan umum adalah mengonversi data class yang terstruktur rapi ke JSON. Misalnya, jika Anda ingin mengekspor data ke database, atau mengirimkannya ke browser. Berita buruk di sini: tidak ada cara bawaan untuk mengonversi data class ke JSON.
Berita baiknya, ada paket Python yang disebut dataclasses-json yang menyederhanakan tugas ini. Namun, memerlukan decorator tambahan. Anda perlu menginstal paket dengan perintah pip install atau sesuatu seperti Pipenv, idealnya di dalam lingkungan virtual. Misalnya:
$ pip install dataclasses-json
Berikut adalah contoh cara Anda dapat menggunakan paket ini:
from dataclasses import dataclass from dataclasses_json import dataclass_json @dataclass_json @dataclass class Card: rank: str = 'Q' suit: str = 'hearts' card = Card() print(card.to_json())
{"rank": "Q", "suit": "hearts"}
Metode lain adalah menggunakan pewarisan Python dan mewarisi dari kelas JSONEncoder untuk membuat enkoder kustom Anda sendiri. Keuntungan di sini adalah Anda tidak perlu menginstal paket eksternal. Anda dapat mempelajari cara melakukannya dalam posting blog ini.
Terus belajar
Paket Python attrs memiliki versi lanjutan dari class data Python bawaan