CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Bonne pratique Python

Lagrangien
Lagrangien
Niveau 8
21 décembre 2014 à 02:05:50

Salut,

Je sais qu'il est commun en python de faire précéder d'un underscore les attributs/méthodes qui, dans d'autres langages, seraient protected, et de deux underscores pour les privates. D'un autre côté, on lit aussi que toute variable/méthode précéde d'un underscore avertir l'utilisateur du fait qu'il doit être certain de ce qu'il est en train de faire.

Prenons maintenant le cas d'un attribut d'objet, qui peut sans autre être lue par l'utilisateur, mais qui nécessite un peu de réflexion pour être modifiée en écriture. Ce n'est pas pour autant protected, ni private. Que dois-je faire ? Précéder d'un underscore quand même ? Utiliser les properties (que je n'aime pas beaucoup car elles cachent à l'utilisateur le fait qu'une fonction s'occupe en réalité du set_attribute) ?

Pseudo supprimé
Pseudo supprimé 21 décembre 2014 à 08:58:42

Non.

Lagrangien
Lagrangien
Niveau 8
21 décembre 2014 à 11:19:07

Non quoi ? Ni utiliser les properties, ni faire précéder le nom de l'attribut d'un underscore ?
As-tu des arguments, une explication, un conseil ?

Lagrangien
Lagrangien
Niveau 8
02 janvier 2015 à 14:34:38

Up ! Besoin d'aide...

Exemple pratique:

J'ai une structure assez lourde qui possède, entre autres attributs, un attribut "elements", qui est une liste d'objets. Elements peut être lu sans autres (typiquement, avec l'encapsulation à la C++/Java, on aurait un get_elements() qui retourne elements tout cru). Par contre, elements nécessite un setter particulier, car il y a un traitement spécial à faire sur des objets lorsqu'elements est modifié. Que faire ?
En effet, si je renomme l'attribut en _elements, pour que l'utilisateur ne soit pas tenté de la modifier sans utiliser la fonction appropriée, alors cela gâche la simplicité pour la lecture de l'élément (ce n'est pas très pythonique de faire un get_elements qui consiste en def get_elements(self): return self.elements ). Il me reste encore les propriétés, mais comme dit plus haut, je n'aime pas le fait qu'elle cachent à l'utilisateur le comportement réel d'un objet.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment