IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

private et protected en python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 65
    Par défaut private et protected en python
    Bonjour,

    Je suis nouveau avec python et je m'étonne de ne pas trouver la possibilité de déclarer des méthode de manière private ou protégée. Apparément toutes définition est public que cela soit pour une variable membre ou une méthode !?!?

    Pouvez-vous m'indiquer si je me trompe ou il y à une manière de faire cela ?

    Merci

    K-pa

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Un double underscore devant ta variable simule le comportement privé.
    Mais pourquoi vouloir à ce point du private ?
    C'est bon pour une équipe de dev, et encore, mais l'intérêt pour un particulier est moins évident.

  3. #3
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Ça marche plus par convention. Si tu veux qu'une méthode soit privée, préfixe la d'un underscore. Ça empêche personne de l'appeler, mais les programmeurs Python savent qu'elles ne sont pas pour eux.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 65
    Par défaut
    Ok et pour le protected j'oublie ?

    @jml94

    Ces mots clef permettent une bien plus grande robustesse du code et évite les bêtise. En thérorie en POO il ne devrait jamais y avoir de variables membres public !
    Après c'est une question d'habitude si tu passe à d'autres language et que tu n'as pas apris à les utilisé sous python tu va te faire tappez sur les doigts !

    K-pa

  5. #5
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Citation Envoyé par jobe Voir le message
    Ok et pour le protected j'oublie ?

    @jml94

    Ces mots clef permettent une bien plus grande robustesse du code et évite les bêtise. En thérorie en POO il ne devrait jamais y avoir de variables membres public !
    Après c'est une question d'habitude si tu passe à d'autres language et que tu n'as pas apris à les utilisé sous python tu va te faire tappez sur les doigts !

    K-pa
    Vu que Python est pas utilisé comme Java, essayer de faire du Java en Python est une erreur. Quand tu fais du Python, fais comme les Pythonistas font. Quand tu fais du Java, fais comme les Javaistes font. Python est un langage plus permissif et plus puissant que Java, mais ça vient avec des responsabilités en plus pour les programmeurs, à savoir, il faut être prudent et respecter les conventions.

    Et non, pas de protected.

  6. #6
    Membre confirmé
    Profil pro
    Agent de maîtrise
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Agent de maîtrise

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Par défaut pythonistas yo
    Les champs d'une classe sont private qd il y a un __ devant come dans
    classX.__privField. Pas de protected en python mais un _ signale pas touche.
    Pour réellement maitriser les accés aux champs utiliser les property.
    Eplucher aussi les metaclass c'est balaise

  7. #7
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par GnuVince Voir le message
    Vu que Python est pas utilisé comme Java, essayer de faire du Java en Python est une erreur. Quand tu fais du Python, fais comme les Pythonistas font. Quand tu fais du Java, fais comme les Javaistes font. Python est un langage plus permissif et plus puissant que Java, mais ça vient avec des responsabilités en plus pour les programmeurs, à savoir, il faut être prudent et respecter les conventions.

    Et non, pas de protected.
    Exact, et je parle même pas de Perl, qui va dans le sens de ma première question : pourquoi faire des variables privées quand on est entre gentlemen.
    Plus concrètement, je comprends et j'utilise l'attribut privé pour une variable dont le getter est autre chose qu'un simple return.
    Mais coder des accesseurs pour juste mettre des return et des affectations sans vérification, c'est plus ou moins inutile. Et si en plus tu ajoute les erreurs dûes aux passages par référence, certains attributs sont beaucoup moins privés qu'on ne le pense.

Discussions similaires

  1. Héritage : private/public/protected
    Par le Daoud dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2007, 13h47
  2. Autre reflection Private vs Protected?
    Par mathk dans le forum Langage
    Réponses: 32
    Dernier message: 10/08/2007, 18h55
  3. Réponses: 16
    Dernier message: 30/05/2007, 23h07
  4. problème de private , public , protected
    Par florantine dans le forum C++
    Réponses: 3
    Dernier message: 17/01/2006, 20h51
  5. [Certification] private et protected, question
    Par Satch dans le forum Langage
    Réponses: 4
    Dernier message: 17/01/2006, 17h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo