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.