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=namemengikat 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.