Menu
Coddy logo textTech

Dekorator metody klasowej

Część sekcji Programowanie obiektowe ścieżki Python w Coddy. Lekcja 12 z 64.

Dekorator @classmethod tworzy metody, które otrzymują samą klasę jako pierwszy parametr (cls) zamiast instancji (self).

Oto przykład klasy z metodami klasowymi:

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")

Wywołuj metody klasy, używając nazwy klasy:

info = Student.get_school_info()
print(info)

Utwórz kilku uczniów:

alice = Student("Alice")
bob = Student("Bob")

updated_info = Student.get_school_info()
print(updated_info)

Użyj metod klasy jako alternatywnych konstruktorów:

guest = Student.create_guest_student()
print(guest.name)
print(Student.get_school_info())

Wynik:

School: Python Academy, Students: 0
School: Python Academy, Students: 2
Guest
School: Python Academy, Students: 3

Metody klasy można również wywoływać z poziomu instancji:

alice = Student("Alice")
info_from_instance = alice.get_school_info()
print(info_from_instance)

Wynik:

School: Python Academy, Students: 1

Najważniejsza kwestia: używaj @classmethod, gdy chcesz uzyskać dostęp do atrybutów klasy lub utworzyć alternatywne sposoby konstruowania obiektów. Pierwszym parametrem jest cls (sama klasa), a nie self.

Spróbuj swoich sił

Ta lekcja nie zawiera wyzwania z kodem.

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Python online