Menu
Coddy logo textTech

Decoratore di metodo di classe

Fa parte della sezione Programmazione orientata agli oggetti del percorso Python di Coddy. Lezione 12 di 64.

Il decoratore @classmethod crea metodi che ricevono la classe stessa come primo parametro (cls) invece di un'istanza (self).

Ecco un esempio di classe con metodi di classe:

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

Chiama i metodi della classe usando il nome della classe:

info = Student.get_school_info()
print(info)

Crea alcuni studenti:

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

updated_info = Student.get_school_info()
print(updated_info)

Usa i metodi di classe come costruttori alternativi:

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

Output:

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

I metodi di classe possono essere chiamati anche dalle istanze:

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

Output:

School: Python Academy, Students: 1

Punto chiave: usa @classmethod quando devi accedere agli attributi della classe o creare modi alternativi per costruire oggetti. Il primo parametro è cls (la classe stessa), non self.

Provalo tu

Questa lezione non include una sfida di codice.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Python online