CodeBlanks Logo Icon CodeBlanks

@classmethod

@classmethod ile sınıf metotlarını öğrenirsin.

@classmethod decorator

@classmethod decorator'ı, ilk parametre olarak cls alır. cls, çağrılan sınıfın kendisidir; örnek değil. Bu, sınıf düzeyinde işlemler için kullanışlıdır.

Örnek: class Counter:\n @classmethod\n def from_list(cls, items):\n return cls(len(items)). Counter.from_list([1, 2, 3]) çağrısında cls Counter'dır; cls(len(items)) yeni bir örnek oluşturur. Bu desen alternatif kurucu olarak yaygındır.

cls neyi temsil eder?

cls, metodu çağıran sınıfın kendisidir. Örnek veriye değil, sınıfa erişim sağlar. cls(...) yazarak yeni örnek oluşturulabilir; bu, alternatif kurucu yazmayı kolaylaştırır.

Örnek: Counter.from_list([1, 2, 3]) çağrısında cls, Counter'dır. cls(len(items)) ile Counter(3) örneği oluşur. Bu, alt sınıflarda da doğru çalışır; cls her zaman çağıran sınıf olur.

Uygulama Counter'a classmethod ekle

Counter sınıfını tanımla. def __init__(self, count): ve gövdede self.count = count yaz. @classmethod ve def from_list(cls, items): ekle; gövdede return cls(len(items)) yaz. Sonra c = Counter.from_list([1, 2, 3]) ile örnek oluştur ve print(c.count) yaz.

Başlangıç kodu

main.py
# Counter sınıfını tanımla

Örnek çözüm

main.py
# Counter sınıfını tanımla
class Counter:
    def __init__(self, count):
        self.count = count
    @classmethod
    def from_list(cls, items):
        return cls(len(items))

c = Counter.from_list([1, 2, 3])
print(c.count)

Beklenen çıktı

3

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 classmethod imzasını tamamla

Soru
class Counter:
    @classmethod
    def from_list(____, items):
        return cls(len(items))
Cevap
class Counter:
    @classmethod
    def from_list(cls, items):
        return cls(len(items))

Açıklama: @classmethod ilk parametre olarak cls alır.

2 @classmethod'un ilk parametresi nedir?

  • cls Doğru cevap
  • self
  • this
  • class

Açıklama: @classmethod'un ilk parametresi cls olur.

3 classmethod kavramlarını eşle

Kavram Anlamı
@classmethod Decorator
cls Sınıf referansı
cls(len(items)) Yeni örnek

Orta seviye bölümündeki tüm dersler