Resim

Sınıf Metotları (@classmethod )

Sınıf Metotları (@classmethod )

Sınıfın Kendisiyle Konuşmak

Şimdiye kadar tüm metotlarımız nesne üzerinde (self) çalışıyordu. Peki ya bir fonksiyonun, nesnenin durumundan bağımsız olarak sınıfın kendisiyle ilgili bir işlem yapması gerekirse? İşte bu noktada Sınıf Metotları devreye girer.

Sınıf Metodu: Bir sınıfa ait olan, ancak nesnenin bir örneğine (instance) bağlı olmayan bir metottur.

Tanım ve Söz Dizimi

  • Dekoratör: Metodun hemen üzerine @classmethod dekoratörü konulur.

  • İlk Argüman (cls): Nesneyi temsil eden self yerine, sınıfın kendisini temsil eden cls (class) argümanını alır.

class Urun:
    stok_kodu = "TR-001" # Sınıf niteliği

    def __init__(self, ad, fiyat):
        self.ad = ad
        self.fiyat = fiyat

    @classmethod
    def kodu_goster(cls):
        # cls.stok_kodu ile Sınıf Niteliğine erişilir
        return f"Ürünün Genel Stok Kodu: {cls.stok_kodu}"

Kendiniz Deneyebilirsiniz:

En Yaygın Kullanım Alanı: Alternatif Yapıcılar (Alternative Constructors)

Sınıf metotlarının en güçlü kullanımı, __init__'in yapamadığı bir şekilde nesne oluşturmaktır. __init__ her zaman aynı parametreleri bekler. Ancak biz bazen veriyi farklı bir formattan (örneğin bir dizeden) almak isteyebiliriz.

  • Örnek: Veriyi "isim-fiyat" formatında bir dizeden alarak nesne oluşturma.

class Kitap:
    def __init__(self, baslik, yazar):
        self.baslik = baslik
        self.yazar = yazar

    @classmethod
    def stringden_olustur(cls, kitap_string):
        """Veriyi 'Başlık:Yazar' formatında dizeden alır ve 
                Kitap nesnesi döndürür."""
        baslik, yazar = kitap_string.split(":")
        
        # cls() kullanımı, doğrudan Kitap(baslik, yazar) 
        #çağırmakla aynıdır.
        # Bu, alt sınıflar miras aldığında esneklik sağlar.
        return cls(baslik, yazar) 

# Kullanım
kitap_dizesi = "Savaş ve Barış:Tolstoy"
kitap_nesnesi = Kitap.stringden_olustur(kitap_dizesi)

print(f"Kitabın Adı: {kitap_nesnesi.baslik}")
print(f"Yazarı: {kitap_nesnesi.yazar}")

Neden cls() Kullanırız?

cls() kullanmak, fonksiyonunuzu miras almaya hazır hale getirir (Polymorphism). Eğer başka bir sınıf (EdebiKitap) Kitap sınıfından miras alırsa, stringden_olustur metodu otomatik olarak bir EdebiKitap nesnesi döndürecektir.

Kendiniz Deneyebilirsiniz:

🔥 Python Kariyerinizi Hemen Başlatın!

Hemen kursumuza kaydolun ve bu güçlü araçları kullanarak profesyonel Python geliştiricisi olma yolunda ilk adımı atın. Kursumuzdaki uygulamalı modüller, sizi sadece bir yazılımcı adayı değil, hazır bir profesyonel haline getirecek. Python Eğitimini Udemy platformunda bulabilirsiniz.

[ Python Eğitimi Sıfırdan İleri Seviye ]

Tıklayın ve Python Eğitimine Hemen Kaydolun!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?