0Pricing
Python Academy · Ders

Sınıf Örüntüleri

Nesne özniteliklerine göre eşleştirin

Sınıf Örüntüleri, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Nesnelerle Eşleştirme

Sınıf desenleri, match deyiminin bir nesnenin türünü denetlemesine ve özniteliklerini tek adımda çıkarmasına olanak tanır. Bir durumun içinde kurucu çağrısına benzer görünürler.

Yalnızca Türü Denetleme

Boş parantezli bir sınıf deseni, o sınıfın herhangi bir örneğiyle eşleşir.

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]))

Öznitelikleri Adla Yakalama

Parantezlerin içinde, örneklerle eşleşmek ve adlandırılmış özniteliği bir değişkene bağlamak için attr=name yazın.

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)

Belirli Öznitelik Değerleriyle Eşleştirme

Bir özniteliğin değişmez bir değere eşit olmasını zorunlu tutabilirsiniz. Bu durum yalnızca x ekseni üzerinde bulunan noktalarla eşleşir.

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)))

__match_args__ ile Konumsal Desenler

Bir sınıf __match_args__ tanımlıyorsa öznitelikleri konumsal olarak eşleştirebilirsiniz. Veri sınıfları bunu alan sıralarına göre otomatik olarak ayarlar.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

p = Point(3, 4)

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

__match_args__ Tanımını El İle Yapma

Normal bir sınıf için __match_args__ değerini, konumsal olarak kullanılmasını istediğiniz özniteliklerin adlarını içeren bir demet olarak ayarlayın.

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)

Sınıfa Göre Yönlendirme

Sınıf desenleri, birbiriyle ilişkili türler ailesi üzerinde temiz bir yönlendirici oluşturmanızı sağlar; her tür kendi durumunda ele alınır.

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)))

Sınıf Desenlerini İç İçe Kullanma

Sınıf desenleri iç içe kullanılabilir. Kendisi de bir nesne olan bir alan, başka bir sınıf deseniyle eşleştirilebilir.

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)

Yerleşik Türlerle Birleştirme

Yerleşik türler, değeri yakalayan tek bir konumsal bağımsız değişkeni destekler. int(n) bir tamsayıyla eşleşir ve onu n değişkenine bağlar.

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'))

Sınıf Desenleri Ne Zaman Kullanılmalı

Nesnelerin hem türünün hem de öznitelik değerlerinin mantığı belirlediği durumlarda, örneğin olay nesneleri, AST düğümleri veya şekil hiyerarşileriyle çalışırken sınıf desenlerini tercih edin. Bunlar, ayrıntılı isinstance denetimlerinin ve öznitelik erişiminin yerini alır.

Konumsal ve Anahtar Sözcüklü Desenleri Birleştirme

Tıpkı bir işlev çağrısında olduğu gibi, tek bir sınıf deseninde konumsal ve anahtar sözcüklü alt desenleri birleştirebilirsiniz. Konumsal olanlar __match_args__ sırasını kullanır; anahtar sözcüklü olanlar özniteliği açıkça adlandırır.

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)

Hızlı Kontrol

Point(x=0, y=y) deseni neyle eşleşir?

Özet

Nesne özniteliklerine göre eşleştirme yapmayı öğrendiniz.

  • ClassName() türü denetler.
  • attr=name öznitelikleri bağlar; değişmez değerler tam değer eşleşmesi gerektirir.
  • __match_args__ konumsal eşleştirmeyi etkinleştirir.
  • Sınıf desenleri iç içe kullanılabilir ve tür hiyerarşileri üzerinde yönlendirme yapabilir.

Sıkça Sorulan Sorular

“Sınıf Örüntüleri” dersi ücretsiz mi?

Evet — “Sınıf Örüntüleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Sınıf Örüntüleri” dersinde ne öğreneceğim?

Nesne özniteliklerine göre eşleştirin Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Sınıf Örüntüleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. match ve case Temelleri
  2. Dizileri ve Eşlemeleri Eşleştirme
  3. Sınıf Örüntüleri
  4. Koruyucular ve Jokerler
← Python Academy Sayfasına Dön