0Pricing
Python Academy · Pelajaran

Mendefinisikan Dataclass

Gunakan @dataclass untuk menghapus kode berulang.

Mendefinisikan Dataclass adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Mengapa Kelas Data?

Ketika Anda menulis kelas yang sebagian besar hanya menyimpan data, Anda akhirnya mengulang kode templat yang sama: __init__, __repr__, dan __eq__. Modul kelas data membuat semuanya untuk Anda berdasarkan deklarasi field sederhana.

  • Lebih sedikit kode yang perlu ditulis dan dibaca.
  • Lebih kecil kemungkinan terjadi kesalahan ketik dalam __init__.
  • Sudah tersedia dalam pustaka standar sejak Python 3.7.

Cara Lama

Berikut adalah kelas biasa yang menyimpan sebuah titik. Perhatikan betapa banyak pengetikan yang diperlukan hanya untuk menyimpan dua angka.

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(1, 2)
print(p.x, p.y)

Dekorator @dataclass

Terapkan @dataclass di atas sebuah kelas dan deklarasikan field dengan anotasi tipe. Python akan membuat __init__ secara otomatis.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

p = Point(1, 2)
print(p.x, p.y)

__repr__ Otomatis

Kelas data juga membuat __repr__ yang mudah dibaca, sehingga saat objek dicetak, yang ditampilkan adalah field-nya, bukan alamat memori.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

print(Point(3, 4))

__eq__ Otomatis

Dua instans kelas data dianggap sama jika semua field-nya sama. Anda tidak perlu menulis __eq__ secara manual.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

print(Point(1, 2) == Point(1, 2))
print(Point(1, 2) == Point(9, 9))

Anotasi Tipe Wajib Digunakan

Setiap field harus memiliki anotasi tipe. Anotasi inilah yang memberi tahu mekanisme kelas data bahwa nama tersebut adalah sebuah field. Penetapan nilai tanpa anotasi menjadi atribut kelas biasa, bukan field.

from dataclasses import dataclass

@dataclass
class User:
    name: str
    age: int

u = User('Alice', 30)
print(u)

Menambahkan Metode

Kelas data tetap merupakan kelas normal. Anda dapat menambahkan metode biasa yang menggunakan field yang dibuat secara otomatis.

from dataclasses import dataclass

@dataclass
class Rectangle:
    width: int
    height: int

    def area(self):
        return self.width * self.height

r = Rectangle(3, 4)
print(r.area())

Mengubah Field

Secara bawaan, instans kelas data dapat diubah, sehingga Anda dapat menetapkan ulang field setelah pembuatan, seperti atribut biasa.

from dataclasses import dataclass

@dataclass
class Counter:
    value: int

c = Counter(0)
c.value += 5
print(c.value)

asdict dan astuple

Fungsi pembantu asdict() dan astuple() mengubah sebuah instans menjadi kamus atau tupel, yang berguna untuk serialisasi.

from dataclasses import dataclass, asdict, astuple

@dataclass
class Point:
    x: int
    y: int

p = Point(1, 2)
print(asdict(p))
print(astuple(p))

Kelas Data Bersarang

Sebuah field kelas data dapat berupa kelas data lainnya. __repr__ dan asdict() yang dibuat secara otomatis akan menelusuri struktur bersarang.

from dataclasses import dataclass, asdict

@dataclass
class Address:
    city: str

@dataclass
class Person:
    name: str
    address: Address

p = Person('Bob', Address('Paris'))
print(asdict(p))

Kapan Menggunakan Kelas Data

Gunakan kelas data ketika sebuah kelas terutama berfungsi untuk mengelompokkan nilai-nilai yang saling berkaitan.

  • Objek konfigurasi.
  • Catatan yang dikembalikan dari sebuah fungsi.
  • Tipe nilai sederhana seperti koordinat atau uang.

Untuk kelas yang lebih berfokus pada perilaku daripada data, kelas biasa mungkin lebih mudah dipahami.

Pemeriksaan Singkat

Apa yang dibuat secara otomatis oleh dekorator @dataclass?

Rangkuman

Anda telah mempelajari cara menggunakan @dataclass untuk menghapus kode templat.

  • Deklarasikan field dengan anotasi tipe.
  • __init__, __repr__, dan __eq__ dibuat secara otomatis.
  • Gunakan asdict() dan astuple() untuk mengubah instans.
  • Anda tetap dapat menambahkan metode dan membuat kelas data bersarang.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mendefinisikan Dataclass” gratis?

Ya — teks lengkap “Mendefinisikan Dataclass” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mendefinisikan Dataclass”?

Gunakan @dataclass untuk menghapus kode berulang. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Mendefinisikan Dataclass” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mendefinisikan Dataclass
  2. Nilai Default dan field()
  3. Opsi Pembekuan dan Perbandingan
  4. Pustaka attrs
← Kembali ke Python Academy