Menu
Coddy logo textTech

Décorateur de méthode de classe

Fait partie de la section Object Oriented Programming du Journey Python de Coddy — leçon 12 sur 64.

Le décorateur @classmethod crée des méthodes qui reçoivent la classe elle-même comme premier paramètre (cls) au lieu d'une instance (self).

Voici un exemple d'une classe avec des méthodes de 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")

Appelez les méthodes de classe en utilisant le nom de la classe :

info = Student.get_school_info()
print(info)

Créez quelques étudiants :

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

updated_info = Student.get_school_info()
print(updated_info)

Utilisez des méthodes de classe comme constructeurs alternatifs :

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

Sortie :

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

Les méthodes de classe peuvent également être appelées à partir d'instances :

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

Sortie :

School: Python Academy, Students: 1

Point clé : Utilisez @classmethod lorsque vous avez besoin d'accéder aux attributs de classe ou de créer des méthodes alternatives pour construire des objets. Le premier paramètre est cls (la classe elle-même), et non self.

Aide-mémoire

Le décorateur @classmethod crée des méthodes qui reçoivent la classe elle-même comme premier paramètre (cls) au lieu d'une instance (self).

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

Appelez les méthodes de classe en utilisant le nom de la classe :

info = Student.get_school_info()
guest = Student.create_guest_student()

Les méthodes de classe peuvent également être appelées à partir d'instances :

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

Utilisez @classmethod lorsque vous avez besoin d'accéder aux attributs de la classe ou de créer des manières alternatives de construire des objets.

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Object Oriented Programming