Middle
Comment les méthodes de classe sont-elles implémentées en Python?
sobes.tech IA
Réponse de l'IA
En Python, les méthodes de classe sont implémentées comme des fonctions définies à l'intérieur de la définition de la classe. Elles prennent comme premier argument une instance de la classe (généralement appelée self), ce qui leur permet d'accéder et de modifier les attributs de cette instance. Il existe également des méthodes de classe, liées à la classe elle-même (cls), et des méthodes statiques, qui ne sont liées ni à l'instance ni à la classe.
class MyClass:
def __init__(self, value):
# Méthode d'initialisation (constructeur)
self.value = value
def instance_method(self):
# Méthode d'instance classique
print(f"Valeur de l'instance : {self.value}")
@classmethod
def class_method(cls, new_value):
# Méthode de classe, prend comme premier argument la classe elle-même
print(f"Création d'une nouvelle instance avec une méthode de classe")
return cls(new_value * 2) # On peut utiliser cls pour créer de nouvelles instances
@staticmethod
def static_method(x, y):
# Méthode statique, non liée ni à l'instance ni à la classe
print("Appel de la méthode statique")
return x + y
| Type de méthode | Premier argument | Accès aux attributs de l'instance | Accès aux attributs de la classe | Décorateur |
|---|---|---|---|---|
| Méthode d'instance | self |
Oui | Oui (via self.__class__) |
Non |
| Méthode de classe | cls |
Non (seulement via l'instance) | Oui | @classmethod |
| Méthode statique | Aucun | Non | Non | @staticmethod |
L'appel des méthodes se fait comme suit :
obj = MyClass(10)
# Appel de la méthode d'instance
obj.instance_method() # Sortie : Valeur de l'instance : 10
# Appel de la méthode de classe
new_obj = MyClass.class_method(5) # Sortie : Création d'une nouvelle instance avec une méthode de classe
print(new_obj.value) # Sortie : 10
# Appel de la méthode statique
result = MyClass.static_method(2, 3) # Sortie : Appel de la méthode statique
print(result) # Sortie : 5