Selamlar. Bu yazının konusu Python classmethod fonksiyonu nedir üzerine olacak. Bir önceki yazıda hatırlarsanız chr fonksiyonu hakkında bir şeyler karalamıştım.
Python classmethod fonksiyonu nedir
Sınıfın kendisi hakkında bilgi veren decoratorlerden olan class method staticmetod fonksiyonu ile benzerdir. Ancak aralarında bazı farklar bulunmaktadır. Örneğin staticmethod aldığı parametreler haricinde kalan şeyleri çok da önemsemez.
Bundan farklı olarak classmethod ise parametre olarak sınıfın kendisini alır. Bu sayede sınıfla ilgili tüm bilgiye sahip olmaktadır. Eğer classmethod ile çalışıyorsanız sınıfın kendisi ya da nesne adı ile çağırılabilir. Örneğin, Sınıf.classmethod() ya da Sınıf().classmethod() gibi.
Kullanım
classmethodlar ilk parametreyi cls olarak sınıfın kendisi şeklinde almaktadır.
class Test: def yaz(cls, isim): print(cls, isim) Test.yaz = classmethod(Test.yaz) Test.yaz("Ali")
Beklenildiği üzere Ali yazılacaktır. Bu arada sınıfla ilgili bilgiyi biz sunmasak da cls değişkeni tıpkı self’te olduğu şekliyle alıyor. Ayrıca print içerisindeki ilk parameter class hakkında bilgi sahibi olabiliriz. Bir başka örnek şöyle:
class Insan: adi = "ali" soyadi = "goren" yasi = 24 country = "tr" class Bilgi(Insan): def bilgiyaz(cls): print(cls.adi, cls.soyadi, str(cls.yasi), cls.country, cls) Insan.bilgiyaz = classmethod(Bilgi.bilgiyaz) Insan.bilgiyaz()
Yukarıdaki yöntemde ise instance alınan sınıf insan sınıfı olmakta. Dilerseniz decorator olarak da şöyle kullanabilirsiniz. Resmi dokümana bakabilirsiniz.
class Insan: adi = "ali" soyadi = "goren" yasi = 24 country = "tr" class Bilgi(Insan): @classmethod def bilgiyaz(cls): print(cls.adi, cls.soyadi, str(cls.yasi), cls.country, cls) Insan.bilgiyaz = Bilgi.bilgiyaz Insan.bilgiyaz()
Arkadaşlar bu yazının konusu Python classmethod fonksiyonu nedir üzerine oldu. Umarım faydalı olmuştur. Eksik ya da hatalı olduğunu düşündüğünüz noktalar var ise belirtmeniz beni memnun edecektir.
İyi çalışmalar dilerim.