Utilité de "self" en python ?
Résolu/Fermé
Hr2944
Messages postés
720
Date d'inscription
mardi 8 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2020
-
Modifié le 6 avril 2019 à 13:27
Hr2944 Messages postés 720 Date d'inscription mardi 8 janvier 2019 Statut Membre Dernière intervention 22 janvier 2020 - 7 avril 2019 à 23:01
Hr2944 Messages postés 720 Date d'inscription mardi 8 janvier 2019 Statut Membre Dernière intervention 22 janvier 2020 - 7 avril 2019 à 23:01
A voir également:
- Code python drapeau tunisie
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code renvoi ooredoo ✓ - Forum Mobile
1 réponse
quent217
Messages postés
421
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
346
7 avril 2019 à 21:06
7 avril 2019 à 21:06
Bonjour,
La philosophie de Python est différente de Java et les classes fonctionnent donc différement.
Toutes les méthodes sont en fait l'équivalent des méthodes static en java, c'est à dire qu'elle ne sont pas liés à une instance de classe mais à la classe elle même. La conséquence est qu'il faut toujours donné en paramètre, l'objet que l'on veut modifier. Heuresement, nous n'avons pas besoins de faire ça nous même car Python le fait à notre le place.
est équivalent à
Vous pouvez d'ailleurs utiliser la deuxième syntaxe et le résultat sera le même.
Il faut donc ensuite récupérer l'objet en question dans la méthode, et c'est pour cela que toutes les méthodes commencent par un paramètre self.
Maintenant, pourquoi les créateurs de Python ont fait ce choix ?
Et bien, c'est une question de lisibilité. En java, quand on écrit
on ne sait pas si maVariable est un attribut de la classe ou une variable local de la méthode. Cela peut parfois porter à confusion et une utilisation explicite de self permet d'éviter des problèmes.
Je vous avoue que j'ai moi même eu du mal avec ce fameux self quand j'ai commencé à utiliser des classes en Python, mais j'ai fini par prendre l'habitude et maintenant j'ai même tendance à utiliser this en Java quand ce n'est pas nécessaire.
La philosophie de Python est différente de Java et les classes fonctionnent donc différement.
Toutes les méthodes sont en fait l'équivalent des méthodes static en java, c'est à dire qu'elle ne sont pas liés à une instance de classe mais à la classe elle même. La conséquence est qu'il faut toujours donné en paramètre, l'objet que l'on veut modifier. Heuresement, nous n'avons pas besoins de faire ça nous même car Python le fait à notre le place.
monObjet = MaClasse() monObjet.maMethode()
est équivalent à
monObjet = MaClasse() MaClasse.maMethode(monObjet)
Vous pouvez d'ailleurs utiliser la deuxième syntaxe et le résultat sera le même.
Il faut donc ensuite récupérer l'objet en question dans la méthode, et c'est pour cela que toutes les méthodes commencent par un paramètre self.
Maintenant, pourquoi les créateurs de Python ont fait ce choix ?
Et bien, c'est une question de lisibilité. En java, quand on écrit
maVariable = valeur;
on ne sait pas si maVariable est un attribut de la classe ou une variable local de la méthode. Cela peut parfois porter à confusion et une utilisation explicite de self permet d'éviter des problèmes.
Je vous avoue que j'ai moi même eu du mal avec ce fameux self quand j'ai commencé à utiliser des classes en Python, mais j'ai fini par prendre l'habitude et maintenant j'ai même tendance à utiliser this en Java quand ce n'est pas nécessaire.
Modifié le 7 avril 2019 à 23:02
Il va le falloir du temps pour m'y habituer mais au moins je saurai ce que je fais.
Bonne soirée