il existe plusieurs types de méthodes et d’attributs selon leur lien avec l’objet ou la classe.
objectifs
- comprendre méthode d’instance, de classe, statique
- utiliser attributs de classe vs instance
explication détaillée
- méthode d’instance :
def m(self, ...) - méthode de classe :
@classmethodavecclscomme premier arg - méthode statique :
@staticmethodsansselfnicls - attribut de classe partagé par toutes les instances
- attribut d’instance propre à chaque objet
exemples exécutables
class Exemple:
compteur = 0 # attribut de classe
def __init__(self):
Exemple.compteur += 1
def instance_method(self):
return f"appel sur instance {self}"
@classmethod
def class_method(cls):
return f"instances créées : {cls.compteur}"
@staticmethod
def static_method():
return "méthode statique appelée"
e1 = Exemple()
print(e1.instance_method())
print(Exemple.class_method())
print(Exemple.static_method())
bonnes pratiques
- choisir le bon type de méthode selon l’usage
- ne pas abuser des attributs de classe pour stocker données mutables
pièges courants
- oublier
@classmethodou@staticmethod - modifier un attribut de classe via une instance par erreur
exercices
- créer une classe qui compte ses instances.
- ajouter une méthode statique qui affiche un message fixe.
- tester appel via la classe et via l’instance.