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: 3Les 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: 1Point 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.
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
1Les fondamentaux de la POO
Fichiers externesIntroduction à la POOClasses vs ObjetsLe paramètre selfMéthodesAttributsMéthode constructeur (__init__)Récapitulatif - Calculatrice simple4Héritage
Héritage de baseLa fonction super()Redéfinition de méthodeHéritage multipleOrdre de résolution des méthodesRécapitulatif - Hiérarchie des employés7Méthodes spéciales
Introduction aux méthodes magiquesSurcharge d'opérateursMéthodes magiques de conteneurRécapitulatif - Liste personnalisée10Patrons de conception, Partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FactoryPatron ObserverPatron Strategy2Décorateurs
Introduction aux décorateursDécorateur de propriétéDécorateur de méthode statiqueDécorateur de méthode de classe5Polymorphisme
Retour sur la redéfinition de méthodeDuck TypingClasses et méthodes abstraitesConception d'interfacesRécapitulatif - Calculateur de formes8Concepts avancés de la POO
Composition vs HéritageMixinsMéthodes statiques et de classeDécorateurs de classeGestionnaires de contexte11Patrons de conception, Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode TemplatePatron ÉtatPatron Composite3Propriétés de classe
Variables d'instance vs variables de classeDécorateurs de propriétéAttributs privésRécapitulatif - Gestionnaire de compte bancaire