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 :

petite question de syntaxe dans une classe [Python 3.X]


Sujet :

Python

  1. #1
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Par défaut petite question de syntaxe dans une classe
    Bonjour,

    Une question de débutant, mais je n'arrive pas à trouver la réponse en dépit de recherches gogol ou autres tuto!!

    Dans le tuto sur la lecture de XML avec la bibli DOM http://quilovnic.developpez.com/pythondom/, il y a une définition de classe que je ne comprends pas:



    class TransformXmlToPersonnes:



    __currentNode__ = None

    __personneList__ = None

    Que signifient les deux doubles soulignée sur les attributs??
    Ce ne sont pas des mots réservés (comme __main__ par exemple).

    Merci de votre réponse à cette question basique!!

    Gérard.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Bonjour F6EEQ,

    En python, comme tu as du le voir dans les tutos, tout les attributs sont publics (que les puristes extrémistes ne s'étranglent pas), mettre un ou 2 tiret-bas autour d'un nom de variable est une manière d'indiquer aux développeurs que ces attributs là doivent être considérés comme 'protégés' et 'privés'.
    Il s'agit là de conventions ni plus ni nmoins

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 716
    Par défaut
    Salut,

    Citation Envoyé par F6EEQ Voir le message
    Que signifient les deux doubles soulignée sur les attributs??
    Ce ne sont pas des mots réservés (comme __main__ par exemple).
    Les noms qui commencent par __ et se terminent aussi par __ comme __main__ sont à priori réservés. Ce qui signifie qu'il n'est pas très judicieux de les utiliser même si dans la pratique Python ne s'en portera pas plus mal (sauf s'il entre en collision avec un nom réservé).
    note: voir le PEP8

    Dans la définition des attributs de classes, ces noms là n'ont pas le même comportement que ceux qui commencent par '__':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> class A:
    ...    def __init__(self):
    ...        self.__a__ = 2
    ...        self.__b = 3
    ...
    >>> a = A()
    >>> a.__a__
    2
    >>> a.__b
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'A' object has no attribute '__b'
    >>>
    Seul "__b" est privé:
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Par défaut
    Merci des réponses.

    Je soupçonnais quelque chose de ce genre.
    Je connaissais @xxx pour les membres privés, mais pas ce double souligné que je n'ai vu mentionné nulle part dans des livres sur Python (tout du moins ceux que j'ai consulté!!)

    Bonne journée.

    Gérard.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Souci de syntaxe dans une classe
    Par diblasio dans le forum Langage
    Réponses: 2
    Dernier message: 17/09/2011, 14h27
  2. [POO] erreur de syntaxe dans une classe
    Par ChronoTiger dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2009, 19h40
  3. [POO] Probléme de syntaxe dans une classe
    Par jewelz dans le forum Langage
    Réponses: 3
    Dernier message: 03/11/2007, 03h57
  4. Réponses: 2
    Dernier message: 04/12/2005, 21h10
  5. Réponses: 14
    Dernier message: 04/12/2005, 08h08

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