Menu
Coddy logo textTech

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: 3

Klassenmethoden 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: 1

Wichtiger 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.

quiz iconTeste dich selbst

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