Bonsoir,
- Quelle est le role d'une methode statique dans une classe en python?
Quand est-ce que je peux creer une methode statique en python ?
Merci
Bonsoir,
- Quelle est le role d'une methode statique dans une classe en python?
Quand est-ce que je peux creer une methode statique en python ?
Merci
Salut,
Une "méthode statique" sera une fonction rangée dans une boîte "class" (plutôt que dans une boîte "module"). Comme pour les méthodes de "class" pas besoin d'instancier un objet de la classe pour pouvoir l'appeler: la différence sera qu'elle ne recevra pas la classe en premier argument.
L'autre différence est qu'on pourra surcharger une méthode de classe (dans une s/classe) alors que ce sera plus difficile pour une fonction statique puisqu'il faudra désigner explicitement sa class.
Pour le reste, vous disposez d'un tas de tiroirs: module, classe, instance,... pour y ranger les déclarations de vos fonctions/méthodes. Dans 95% des cas, savoir dans quel tiroir ranger une fonction/méthode donnée va s'imposer naturellement. Dans les 5% restants, ce sera plutôt arbitraire.
En guise d'illustration, exemples,... le plus simple est de regarder comment sont codés les modules Python "standards" et voir comment ils utilisent ces fonctionnalités.
- W
Merci pour tes explications.
Je viens de faire un exemple, juste pour essayer de comprendre son utilité. Mais j'ai remarqué que je peux l'appeler dans la fonction main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 class Ecole: compteur_eleve = 0 def __init__(self): self.classe = None self.liste_eleve = {} def __str__(self): return self.classe def affichage_liste(self): dicttio = self.liste_eleve for k in dicttio.keys(): return "{} | {:4} | {:4}".format(k,dicttio[k]) @staticmethod def ajouter_eleve(une_classe,nom,prenom,liste): # Pour le numero des eleves Ecole.compteur_eleve += 1 # Dictionnaire dont une clé est un tuple[numero de l'eleve, son nom] liste[Ecole.compteur_eleve,une_classe] = nom + " " + prenom if __name__ == '__main__': la_classe = str(input("Entrer une classe : ")) nom_de_classe = Ecole() nom_de_classe.classe = la_classe # Appellation de la methode statique Ecole.ajouter_eleve(la_classe,"Jean","Natacha",nom_de_classe.liste_eleve) # Afficher le dictionnaire print(nom_de_classe.affichage_liste())
Partager