0Pricing
Python Academy · Pelajaran

Pola Kelas

Cocokkan berdasarkan atribut objek

Pola Kelas adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Mencocokkan Objek

Pola kelas memungkinkan match memeriksa tipe sebuah objek dan mengambil atributnya dalam satu langkah. Pola ini terlihat seperti pemanggilan konstruktor di dalam sebuah kasus.

Pemeriksaan Tipe Saja

Pola kelas dengan tanda kurung kosong mencocokkan setiap instans dari kelas tersebut.

def kind(value):
    match value:
        case int():
            return 'an integer'
        case str():
            return 'a string'
        case _:
            return 'something else'

print(kind(5))
print(kind('hi'))
print(kind([1]))

Menangkap Atribut Berdasarkan Nama

Di dalam tanda kurung, tuliskan attr=name untuk mencocokkan instans dan mengikat atribut yang disebutkan ke sebuah variabel.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

p = Point(3, 4)

match p:
    case Point(x=px, y=py):
        print('point at', px, py)

Mencocokkan Nilai Atribut Tertentu

Anda dapat mengharuskan sebuah atribut sama dengan nilai literal. Kasus ini hanya mencocokkan titik yang berada pada sumbu x.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

def describe(p):
    match p:
        case Point(x=0, y=0):
            return 'origin'
        case Point(x=x, y=0):
            return 'on x-axis at ' + str(x)
        case Point():
            return 'elsewhere'

print(describe(Point(0, 0)))
print(describe(Point(5, 0)))
print(describe(Point(1, 1)))

Pola Posisi dengan __match_args__

Jika sebuah kelas mendefinisikan __match_args__, Anda dapat mencocokkan atribut berdasarkan posisi. Kelas data menetapkan ini secara otomatis berdasarkan urutan kolomnya.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

p = Point(3, 4)

match p:
    case Point(px, py):
        print(px, py)

Mendefinisikan __match_args__ Secara Manual

Untuk kelas biasa, tetapkan __match_args__ ke sebuah tupel yang mencantumkan atribut yang ingin Anda sediakan berdasarkan posisi.

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

match Point(1, 2):
    case Point(a, b):
        print(a, b)

Pengarahan Berdasarkan Kelas

Pola kelas membentuk pengarah yang rapi untuk sekumpulan tipe yang saling terkait, dengan setiap tipe ditangani oleh kasusnya sendiri.

from dataclasses import dataclass

@dataclass
class Circle:
    radius: float

@dataclass
class Square:
    side: float

def area(shape):
    match shape:
        case Circle(radius=r):
            return 3.14159 * r * r
        case Square(side=s):
            return s * s

print(area(Circle(2)))
print(area(Square(3)))

Penyarangan Pola Kelas

Pola kelas dapat disarangkan. Sebuah kolom yang juga merupakan objek dapat dicocokkan dengan pola kelas lainnya.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

@dataclass
class Line:
    start: Point
    end: Point

line = Line(Point(0, 0), Point(3, 4))

match line:
    case Line(start=Point(x=0, y=0), end=Point(x=ex, y=ey)):
        print('from origin to', ex, ey)

Menggabungkan dengan Tipe Bawaan

Tipe bawaan mendukung satu argumen posisi yang menangkap nilainya. int(n) mencocokkan sebuah int dan mengikatnya ke n.

def label(value):
    match value:
        case int(n):
            return 'int ' + str(n)
        case str(s):
            return 'str ' + s
        case _:
            return 'other'

print(label(7))
print(label('hi'))

Kapan Menggunakan Pola Kelas

Gunakan pola kelas ketika tipe dan nilai atribut objek sama-sama menentukan logika, misalnya pada objek peristiwa, simpul AST, atau hierarki bentuk. Pola ini menggantikan pemeriksaan isinstance yang panjang beserta akses atributnya.

Menggabungkan Posisi dan Kata Kunci

Anda dapat menggabungkan subpola posisi dan kata kunci dalam satu pola kelas, sama seperti pada pemanggilan fungsi. Subpola posisi menggunakan urutan __match_args__; subpola kata kunci menyebutkan atribut secara eksplisit.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int
    z: int

p = Point(1, 2, 3)

match p:
    case Point(x, y, z=depth):
        print(x, y, depth)

Uji Cepat

Apa yang dicocokkan oleh pola Point(x=0, y=y)?

Ringkasan

Anda telah mempelajari cara mencocokkan atribut objek.

  • ClassName() memeriksa tipe.
  • attr=name mengikat atribut; nilai literal mengharuskan nilai yang persis sama.
  • __match_args__ memungkinkan pencocokan berdasarkan posisi.
  • Pola kelas dapat disarangkan dan digunakan untuk mengarahkan hierarki tipe.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola Kelas” gratis?

Ya — teks lengkap “Pola Kelas” 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 “Pola Kelas”?

Cocokkan berdasarkan atribut objek 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 3 dari 4.

Berapa lama pelajaran “Pola Kelas” 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. Dasar-Dasar match dan case
  2. Mencocokkan Sequence dan Mapping
  3. Pola Kelas
  4. Guard dan Wildcard
← Kembali ke Python Academy