Class Method Dekoratörü
Coddy'nin Python Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 12 / 64.
@classmethod dekoratörü, bir örnek (self) yerine sınıfın kendisini ilk parametre (cls) olarak alan metotlar oluşturur.
İşte sınıf metotlarına sahip bir sınıf örneği:
class Student:
school_name = "Python Academy"
student_count = 0
def __init__(self, name):
self.name = name
Student.student_count += 1
@classmethod
def get_school_info(cls):
return f"School: {cls.school_name}, Students: {cls.student_count}"
@classmethod
def create_guest_student(cls):
return cls("Guest")Sınıf yöntemlerini sınıf adını kullanarak çağırın:
info = Student.get_school_info()
print(info)Bazı öğrenciler oluşturun:
alice = Student("Alice")
bob = Student("Bob")
updated_info = Student.get_school_info()
print(updated_info)Sınıf metotlarını alternatif yapıcılar olarak kullanın:
guest = Student.create_guest_student()
print(guest.name)
print(Student.get_school_info())Çıktı:
School: Python Academy, Students: 0
School: Python Academy, Students: 2
Guest
School: Python Academy, Students: 3Sınıf metotları örnekler üzerinden de çağrılabilir:
alice = Student("Alice")
info_from_instance = alice.get_school_info()
print(info_from_instance)Çıktı:
School: Python Academy, Students: 1Önemli Nokta: Sınıf özniteliklerine erişmeniz veya nesne oluşturmak için alternatif yollar oluşturmanız gerektiğinde @classmethod kullanın. İlk parametre self değil, cls (sınıfın kendisi) parametresidir.
Kopya kağıdı
@classmethod dekoratörü, bir örnek (self) yerine sınıfın kendisini ilk parametre (cls) olarak alan metotlar oluşturur.
class Student:
school_name = "Python Academy"
student_count = 0
def __init__(self, name):
self.name = name
Student.student_count += 1
@classmethod
def get_school_info(cls):
return f"School: {cls.school_name}, Students: {cls.student_count}"
@classmethod
def create_guest_student(cls):
return cls("Guest")Sınıf metotlarını sınıf adını kullanarak çağırın:
info = Student.get_school_info()
guest = Student.create_guest_student()Sınıf metotları örnekler üzerinden de çağrılabilir:
alice = Student("Alice")
info_from_instance = alice.get_school_info()Sınıf özniteliklerine erişmeniz gerektiğinde veya nesne oluşturmak için alternatif yollar yaratmak istediğinizde @classmethod kullanın.
Kendin dene
Bu ders bir kod alıştırması içermiyor.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Object Oriented Programming bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerself ParametresiMetotlarÖzniteliklerYapıcı Metot (__init__)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımsuper() FonksiyonuMetot Geçersiz KılmaÇoklu KalıtımMetot Çözümleme SırasıÖzet - Çalışan Hiyerarşisi7Özel Metotlar
Sihirli Metotlara GirişOperatör Aşırı YüklemeKapsayıcı Sihirli MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım kalıplarına girişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı13Final Meydan Okumaları
E-öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi5Çok Biçimlilik (Polymorphism)
Metot Geçersiz Kılmaya Yeniden BakışDuck TypingSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon ve KalıtımMixinsStatik ve Sınıf MetotlarıSınıf DekoratörleriBağlam Yöneticileri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı