Resim

Statik Metotlar (@staticmethod)

Statik Metotlar (@staticmethod): Sınıfa Ait Yardımcı İşlevler

Bağımsız İşlemlerin Organizasyonu

Bazen bir fonksiyon, ne nesnenin içindeki verilere (self.ad) ne de sınıfın kendi verilerine (cls.stok_kodu) erişime ihtiyaç duyar, ancak mantıksal olarak o sınıfa aittir.

Statik Metot: Sadece sınıf içinde mantıksal olarak gruplanmış, nesneden ve sınıftan tamamen bağımsız olan fonksiyonlardır.

Tanım ve Söz Dizimi

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

  • Argümanlar: Ne self ne de cls argümanını almaz. Tıpkı geleneksel bir Python fonksiyonu gibi tanımlanır.

class Hesaplamalar:
    PI = 3.14 # Sınıf niteliği
    
    @staticmethod
    def daire_alani(yaricap):
        # Ne self ne de cls kullanılır.
        return Hesaplamalar.PI * (yaricap ** 2)
        
    @staticmethod
    def mutlak_deger(sayi):
        # Başka bir basit yardımcı işlev
        return abs(sayi)

Kendiniz Deneyebilirsiniz:

Kullanım Amacı: Mantıksal Gruplama (Utility)

Statik metotlar, bir sınıfa ait olmasalar bile, o sınıfın görev alanıyla (domain) ilgili olan yardımcı işlevleri (utility functions) düzenlemek için kullanılır.

  • Örnek: Bir FormDogrulayici sınıfı düşünün. Bir emailin geçerli olup olmadığını kontrol etmek, nesnenin veya sınıfın durumuna bağlı değildir, sadece dışarıdan gelen veriye bağlıdır.

class KullaniciFormDogrulayici:
    
    @staticmethod
    def email_gecerli_mi(email_adresi):
        if "@" in email_adresi and "." in email_adresi:
            return True
        return False
        
# Statik metotlar, nesne oluşturmaya gerek kalmadan 
#sınıf üzerinden çağrılır.
email_1 = "deneme@site.com"
email_2 = "gecersiz-email"

print(f"'{email_1}'{KullaniciFormDogrulayici.email_gecerli_mi)}")
print(f"'{email_2}'{KullaniciFormDogrulayici.email_gecerli_mi}")

Kendiniz Deneyebilirsiniz:

Ne Zaman Kullanılır?

Bir fonksiyon yazarken kendinize şunu sorun:

  • "Bu fonksiyon, self (nesne verileri) kullanıyor mu?"

    • Evet: Normal metot kullanın.

  • "Bu fonksiyon, cls (sınıf verileri) kullanıyor mu?"

    • Evet: Sınıf metodu (@classmethod) kullanın.

  • "Hayır, sadece argümanlarla çalışıyor ama bu sınıfla ilgili bir görev yapıyor."

    • O zaman: Statik metot (@staticmethod) kullanın.

🔥 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?