DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
Arama butonu
Bu konudaki kullanıcılar: 1 misafir
2
Cevap
1515
Tıklama
0
Öne Çıkarma
staticmethod ile classmethod farkı
S
7 yıl (2418 mesaj)
Yüzbaşı
Konu Sahibi

Python'da @classmethod ile @staticmethod farkını açıklayabilecek olan var mı? @classmethod'da class parametre olarak geliyor, tamam, fakat onu sormuyorum. Niye böyle bir şeye ihtiyaç duyulmuş? Ne sağlıyor?

edit: SO'da cevaplardan tatmin olmadım, zaten kendi aralarında tartışmışlar, "hah, tamam" denecek bir yanıt görmedim.





< Bu mesaj bu kişi tarafından değiştirildi seyfi84 -- 16 Haziran 2019; 10:59:44 >

İ
7 yıl (969 mesaj)
Yüzbaşı

Selamunaleyküm,
Öncelikle Python daki staticmethod la diğer dillerdeki static methodlar(mesela C#) arasında mantık olarak bir farklılık yok.
Ancak classmethod için:
Bilmiyorum dikkatini çektimi ama Python'da constructors için herhangi bir overload bulunmuyor. Sadece __init__ methodunu tanımlayabilirsin. Bu ise birden fazla constructor'a sahip olamayacağın anlamına geliyor. Bunu aşmak için classmethod adı verilen methodların üretilmesine izin verilmiş. Örnek vermek gerekirse:

class Silah:
def __init__(self,name):
self.Name = name

@classmethod
def yeniSilah(cls, name, year):
silah = cls(name) #Bir önceki init methodu çağırıldı
silah.Year = year
return silah #Yeni nesne döndürüldü.

a = Silah("Desert Eagle")
b = Silah.yeniSilah("Desert Eagle",1986)

Görüldüğü üzere classmethod olmasaydı overload etme şansımız yoktu.

Ben böyle biliyorum, inşaallah yardımcı olmuştur hayırlısıyla.



< Bu ileti mobil sürüm kullanılarak atıldı >

S
7 yıl (2418 mesaj)
Yüzbaşı
Konu Sahibi

Sağol fakat tatmin olmadım. Yazdığın şey constructor değil de factory pattern gibi olmuş.
Ben araştırmaya devam ediyorum, Python Essential Reference (david beazley)da birkaç işe yarar paragraf/örnek buldum. En tipik fark şöyle bir örnek (ilki 4 ikincisi 8 basıyor) https://paste.ubuntu.com/p/NbjW7ZBhTD/



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.