Fonction classmethod() de Python
Fonctions intégrées de Python3
classmethod()C'est une fonction intégrée de Python utilisée pour convertir une méthode en méthode de classe.
Une méthode de classe est une méthode qui appartient à la classe plutôt qu'à l'instance ; son premier paramètre est la classe elle-même (généralement nommé cls). Les méthodes de classe peuvent accéder aux attributs de classe mais ne peuvent pas accéder aux attributs d'instance.
Définitions de mots: classmethod 是 class method(类方法)的缩写。
Syntaxe de base et paramètres
Format de syntaxe
classmethod(function)
Description du paramètre
- Paramètre function:
- Type : objet fonction
- Description : la fonction à convertir en méthode de classe.
Description de la fonction
- Valeur de retour: renvoie un objet méthode de classe.
- Fonctionnalités: le premier paramètre est la classe elle-même (cls), et non l'instance (self).
Exemples
Exemple 1 : Utilisation de base
Exemple
class MyClass:
class_attr = 0
@classmethod
def increment(cls):
cls.class_attr += 1
return cls.class_attr
@classmethod
def get_count(cls):
return cls.class_attr
# Appelée via la classe (aucune création d'instance nécessaire)
print(MyClass.increment()) # Sortie : 1
print(MyClass.increment()) # Sortie : 2
print(MyClass.get_count()) # Sortie : 2
# Peut aussi être appelée via une instance (mais peu courant)
obj = MyClass()
print(obj.increment()) # Sortie : 3
class_attr = 0
@classmethod
def increment(cls):
cls.class_attr += 1
return cls.class_attr
@classmethod
def get_count(cls):
return cls.class_attr
# Appelée via la classe (aucune création d'instance nécessaire)
print(MyClass.increment()) # Sortie : 1
print(MyClass.increment()) # Sortie : 2
print(MyClass.get_count()) # Sortie : 2
# Peut aussi être appelée via une instance (mais peu courant)
obj = MyClass()
print(obj.increment()) # Sortie : 3
Sortie attendue :
1 2 2 3
Explication du code :
- Les méthodes de classe sont définies à l'aide du décorateur @classmethod.
- Le premier paramètre est cls, qui représente la classe elle-même.
Exemple 2 : méthode de fabrique
Exemple
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_dict(cls, data):
"""Créer un objet à partir d'un dictionnaire"""
return cls(data['name'], data['age'])
@classmethod
def from_string(cls, s):
"""Créer un objet à partir d'une chaîne (format : nom-âge)"""
name, age = s.split('-')
return cls(name, int(age))
def __str__(self):
return f"{self.name}, {self.age} ans"
# Patron de fabrique utilisant des méthodes de classe
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
p2 = Person.from_string("Jerry-25")
print(p1) # Sortie : Tom, 20 ans
print(p2) # Sortie : Jerry, 25 ans
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_dict(cls, data):
"""Créer un objet à partir d'un dictionnaire"""
return cls(data['name'], data['age'])
@classmethod
def from_string(cls, s):
"""Créer un objet à partir d'une chaîne (format : nom-âge)"""
name, age = s.split('-')
return cls(name, int(age))
def __str__(self):
return f"{self.name}, {self.age} ans"
# Patron de fabrique utilisant des méthodes de classe
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
p2 = Person.from_string("Jerry-25")
print(p1) # Sortie : Tom, 20 ans
print(p2) # Sortie : Jerry, 25 ans
Sortie attendue :
Tom, 20岁 Jerry, 25岁
Les méthodes de classe sont couramment utilisées pour implémenter des méthodes de fabrique afin de créer des objets à partir de différentes sources de données.
Fonctions intégrées de Python3
Autres extensions