Python Academy · Pelajaran

Corak Kelas

Padankan berdasarkan atribut objek

Pelajaran 3 daripada 413 langkah

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=name mengikat atribut; nilai harfiah memerlukan nilai yang tepat.
  • __match_args__ membolehkan padanan mengikut kedudukan.
  • Corak kelas boleh disarangkan dan menghalakan merentasi hierarki jenis.
Percuma untuk bermula

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.

Semua pelajaran dalam kursus ini

  1. Asas match dan case
  2. Memadankan Jujukan dan Pemetaan
  3. Corak Kelas
  4. Pengawal dan Kad Liar
← Kembali ke Python Academy