Fonction classmethod() de Python

Python3 内置函数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

Sortie attendue :

1
2
2
3

Explication du code :

  1. Les méthodes de classe sont définies à l'aide du décorateur @classmethod.
  2. 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

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.


Python3 内置函数Fonctions intégrées de Python3


Autres extensions