Sobes.tech
Junior — Middle

Python'da static ve class olarak ilan edilen metodların kullanımı arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Python'da, @staticmethod ve @classmethod olarak tanımlanan metodlar, sınıf ve örnek verilerine erişim şekillerinde farklılık gösterir:

  • @staticmethod — otomatik olarak örnek (self) veya sınıf (cls) referansı almayan bir metodtur. Normal bir fonksiyon gibi davranır, ancak mantıksal gruplanma için sınıf içinde bulunur. Sınıf veya örnek durumu üzerinde değişiklik yapamaz.

  • @classmethod — ilk argüman olarak sınıfı (cls) alan bir metodtur, örneğin değil. Sınıfın özellikleriyle çalışmaya, alternatif yapıcılar oluşturmaya ve sınıf durumunu değiştirmeye olanak tanır.

Örnek:

class MyClass:
    count = 0

    @staticmethod
    def greet():
        print("Merhaba!")

    @classmethod
    def increment_count(cls):
        cls.count += 1

MyClass.greet()          # Çıktı: Merhaba!
MyClass.increment_count()
print(MyClass.count)     # Çıktı: 1

Bu nedenle, staticmethod sınıf içinde sadece bir fonksiyon iken, classmethod sınıfla çalışan bir yöntemdir.