Corak Kelas
Padankan berdasarkan atribut objek
Corak Kelas ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.
Memadankan Objek
Corak kelas membolehkan match menyemak jenis sesuatu objek dan mengeluarkan atributnya dalam satu langkah. Corak ini kelihatan seperti panggilan pembina dalam sesuatu kes.
Pemeriksaan Jenis Sahaja
Corak kelas dengan kurungan kosong memadankan mana-mana tika 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 Mengikut Nama
Dalam kurungan, tulis attr=name untuk memadankan tika dan mengikat atribut yang dinamakan kepada pemboleh ubah.
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)Memadankan Nilai Atribut Tertentu
Anda boleh menetapkan syarat bahawa sesuatu atribut mesti sama dengan nilai harfiah. Kes ini hanya memadankan titik yang terletak pada paksi-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)))Corak Kedudukan dengan __match_args__
Jika sesuatu kelas mentakrifkan __match_args__, Anda boleh memadankan atribut mengikut kedudukan. Kelas data menetapkannya secara automatik berdasarkan turutan medannya.
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(3, 4)
match p:
case Point(px, py):
print(px, py)Mentakrifkan __match_args__ Secara Manual
Untuk kelas biasa, tetapkan __match_args__ kepada tupel yang menamakan atribut yang Anda mahu tersedia mengikut kedudukan.
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)Menghalakan Mengikut Kelas
Corak kelas membentuk penghala yang kemas untuk sekumpulan jenis berkaitan, dengan setiap jenis dikendalikan oleh kesnya 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)))Menyarangkan Corak Kelas
Corak kelas boleh disarangkan. Medan yang merupakan objek itu sendiri boleh dipadankan dengan corak kelas yang lain.
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 Jenis Terbina Dalam
Jenis terbina dalam menyokong satu argumen kedudukan yang menangkap nilai. int(n) memadankan int dan mengikatnya kepada 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'))Bila Hendak Menggunakan Corak Kelas
Gunakan corak kelas apabila bekerja dengan objek yang jenis dan nilai atributnya sama-sama mempengaruhi logik, seperti objek peristiwa, nod AST atau hierarki bentuk. Corak ini menggantikan pemeriksaan isinstance yang panjang bersama capaian atribut.
Mencampurkan Kedudukan dan Kata Kunci
Anda boleh mencampurkan subcorak kedudukan dan kata kunci dalam satu corak kelas, sama seperti panggilan fungsi. Subcorak kedudukan menggunakan turutan __match_args__; subcorak kata kunci menamakan atribut secara jelas.
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)Semakan Pantas
Apakah yang dipadankan oleh corak Point(x=0, y=y)?
Imbas Kembali
Anda telah mempelajari cara memadankan atribut objek.
ClassName()menyemak jenis.attr=namemengikat atribut; nilai harfiah memerlukan nilai yang tepat.__match_args__membolehkan padanan mengikut kedudukan.- Corak kelas boleh disarangkan dan menghalakan merentasi hierarki jenis.
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 76
- Pelajaran
- 320
Soalan Lazim
Adakah pelajaran “Corak Kelas” percuma?
Ya — teks penuh “Corak Kelas” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Corak Kelas”?
Padankan berdasarkan atribut objek Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Python Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Corak Kelas” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.