Klassenmethoden-Dekorator
Teil des Abschnitts Object Oriented Programming der Python-Journey von Coddy — Lektion 12 von 64.
Der @classmethod-Decorator erstellt Methoden, die die Klasse selbst als ersten Parameter (cls) anstelle einer Instanz (self) erhalten.
Hier ist ein Beispiel für eine Klasse mit Klassenmethoden:
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")Rufen Sie Klassenmethoden unter Verwendung des Klassennamens auf:
info = Student.get_school_info()
print(info)Erstelle einige Studenten:
alice = Student("Alice")
bob = Student("Bob")
updated_info = Student.get_school_info()
print(updated_info)Verwenden Sie Klassenmethoden als alternative Konstruktoren:
guest = Student.create_guest_student()
print(guest.name)
print(Student.get_school_info())Ausgabe:
School: Python Academy, Students: 0
School: Python Academy, Students: 2
Guest
School: Python Academy, Students: 3Klassenmethoden können auch von Instanzen aus aufgerufen werden:
alice = Student("Alice")
info_from_instance = alice.get_school_info()
print(info_from_instance)Ausgabe:
School: Python Academy, Students: 1Wichtiger Punkt: Verwenden Sie @classmethod, wenn Sie auf Klassenattribute zugreifen oder alternative Möglichkeiten zur Erstellung von Objekten schaffen müssen. Der erste Parameter ist cls (die Klasse selbst), nicht self.
Spickzettel
Der @classmethod-Decorator erstellt Methoden, die die Klasse selbst als ersten Parameter (cls) anstelle einer Instanz (self) erhalten.
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")Rufen Sie Klassenmethoden unter Verwendung des Klassennamens auf:
info = Student.get_school_info()
guest = Student.create_guest_student()Klassenmethoden können auch von Instanzen aus aufgerufen werden:
alice = Student("Alice")
info_from_instance = alice.get_school_info()Verwenden Sie @classmethod, wenn Sie auf Klassenattribute zugreifen oder alternative Wege zur Erstellung von Objekten schaffen müssen.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Object Oriented Programming
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDer self-ParameterMethodenAttributeKonstruktor-Methode (__init__)Zusammenfassung – Einfacher Taschenrechner4Vererbung
Grundlagen der VererbungDie super()-FunktionMethoden überschreibenMehrfachvererbungMethod Resolution OrderZusammenfassung - Mitarbeiter-Hierarchie7Spezielle Methoden
Einführung in Magic MethodsOperator-ÜberladungMagic Methods für ContainerRückblick - Eigene Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster13Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung2Dekoratoren
Einführung in DekoratorenProperty-DekoratorStatischer Methoden-DekoratorKlassenmethoden-Dekorator5Polymorphismus
Methoden-Überschreiben vertieftDuck TypingAbstrakte Klassen und MethodenInterface-DesignZusammenfassung – Formen-Rechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungMixinsStatische und KlassenmethodenKlassendekoratorenContext Manager3Klasseneigenschaften
Instanz- vs. KlassenvariablenProperty-DekoratorenPrivate AttributeZusammenfassung – Bankkonto-Manager6Kapselung
Public, Protected, Private MemberZugriffsmodifikatorenInformation HidingProperty-Decorators für FortgeschritteneZusammenfassung - Studentenverwaltungssystem12Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen