Coucou les foromouleurs
Ça fait un peu plus d'un an que je me remet à Python après une absence de quasi 20 ans, ça avance bien, je commence à faire des trucs sympa.
Mais je me rend compte que plus de 80% de mes lignes de code commencent par self.blabla, notamment dès qu'il s'agit d'écrire du GUI (PyQt5), qui réclame de créer beaucoup de variables.
Outre le fait que je trouve ça dégueu, je me demande si j'ai bien tout compris à comment on manipule les variables d'instance.
C'est pareil chez vous ?
# ça me semble pas anormal
Posté par rowin . Évalué à 3.
Euh bah moi ça ne me semble pas anormal, les variables d'instance c'est bien
self
. Après t'es pas obligé d'utiliserself
, tu peux le raccourcir ens
si ça te chante, mais ça fait pas de miracles (et pas sûr que la PEP 8 soit d'accord).Après t'as peut-être des exemples précis dans lesquels c'est particulièrement dégueu ?
# N'utilise des objets que si tu as besoin d'état
Posté par MrBidon . Évalué à 3. Dernière modification le 11 décembre 2020 à 16:06.
Je n'ai jamais fait de gros gros projet en python, mais j'utilise ce langage depuis un bon moment pour toute sorte de script.
Je dirais qu'il faut utiliser des fonctions uniques au maximum (sans variable globale hein) et n'utiliser des objets que si tu as besoin d'un état.
En codant comme ça tu n'aurais moins de self et ton code sera plus compréhensible.
# Selfish language!
Posté par AncalagonTotof . Évalué à 2.
Désolé …
Mais je plussois, ça me gonfle !
Plein de gens vont trouver ça normal. C'est normal aussi vu que c'est le langage qui l'impose.
Mais y'avait mieux à faire : j'écris les méthodes d'une classe, mon code est "géographiquement" dans cette classe, et pourtant, à chaque occurrence, faut lui dire que c'est l'attribut que je veux manipuler … Pfffff …
Y aurait-il une raison, une bonne, pour expliquer ce choix ?
(j'avoue, je n'en fait pas tout les jours. Mais ça me pend au nez alors ça me stresse un peu …)
[^] # Re: Selfish language!
Posté par inkey . Évalué à 3.
Python à pris la décision d'être très explicite la dessus.
Perso, faisant du python quotidiennement, ça me dérange pas, je dirait même qu'au contraire le "self"
de Python (plus exactement la logique sous-jacente qui fait que monobjet.function() équivaut MaClasse.function(monobjet) ) permet de faire facilement des choses qui serait moins trivial voir impossible dans d'autres langages, du style un héritage multiple fin, de la composition.
Pour les méthodes, ça me semble franchement pas un soucis.
Là ou par-contre je suis d'accord que ça peut être pénible c'est quand on à beaucoup d'attribut, mais les dataclasses propose une solution: https://docs.python.org/fr/3/library/dataclasses.html
[^] # Re: Selfish language!
Posté par lolop (site web personnel) . Évalué à 7. Dernière modification le 11 décembre 2020 à 21:32.
Oui, le fait que les variables sont créées dynamiquement dans les espaces de nom.
Dans ce cas, y et est un attribut de l'objet ou bien une variable locale ?
Et z est-il une variable locale, un attribut de l'objet ou de la classe, une variable globale ?
Je t'accorde qu'une expression où identificateur commençant par
.
serait mappé sur le premier paramètre de la méthode permettrait de se passer du self dans les expressions. C'est plus court mais moins lisible (ça commence à faire ruby :-)Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.