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 :

M�thodes priv�es: pratique courant en Python


Sujet :

Python

  1. #1
    Expert confirm�
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par d�faut M�thodes priv�es: pratique courant en Python
    Bonjour,

    Je d�couvre Python apr�s m'�tre surtout int�ress� � C++ et Java. C'est un des langages les plus agr�ables � programmer que j'aie rencontr�. Un b�mol toutefois, il semble difficile de restreindre l'acc�s aux champs et m�thodes.

    Le m�canisme de "mangling" propos� par Python (__variable) semble permettre de restreindre l'acc�s d'un champ ou d'une m�thode. Il est toutefois possible d'acc�der aux champs prot�g�s par _objet__variable.

    Quelle est la pratique courante en Python? Rendez-vous tous vos champs priv�s en utilisant le m�canisme ci-dessus? Programmez-vous des accesseurs pour acc�der aux champs priv�s de vos classes?

    J'ai lu quelque que ce n'�tait pas une pratique courante de programmer des accesseurs en Python et qu'on pr�f�re g�n�ralement acc�der directement aux diff�rents champs d'une classe. Avec C++ et Java, j'ai pris l'habitude de travailler avec un masquage maximal des donn�es. Pensez-vous que c'est un exc�s de z�le?

    Salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  2. #2
    Expert confirm�
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    D�tails du profil
    Informations personnelles :
    �ge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par d�faut
    Bonjour,

    c'est vrai que quand on vient de C++ ou Java, on est d�sorient� par le type d'encapsulation tr�s souple qu'offre Python.

    S'il est crucial que des attributs restent absolument priv�s, il y a quand m�me une possibilit� : impl�menter la m�thode __getattr__, et lui faire contr�ler si l'acc�s � l'attribut est autoris� ou non. Evidemment, au prix d'une petite baisse de performances.
    FAQ XML
    ------------
    � Le moyen le plus s�r de cacher aux autres les limites de son savoir est de ne jamais les d�passer �
    Giacomo Leopardi

  3. #3
    Expert confirm�
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par d�faut
    Merci beaucoup,

    __getattr__ est une fonctionnalit� qui m'avait �chapp� et je vais essayer d'en savoir plus au sujet de son exploitation.

    Meilleures salutations

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    F�vrier 2003
    Messages
    16
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 16
    Par d�faut
    Si tu veux controler ce qu'un module exporte, tu peux aussi regarder du cot� de la variable __all__ :

    The public names defined by a module are determined by checking the module's namespace for a variable named __all__; if defined, it must be a sequence of strings which are names defined or imported by that module. The names given in __all__ are all considered public and are required to exist. If __all__ is not defined, the set of public names includes all names found in the module's namespace which do not begin with an underscore character ("_"). __all__ should contain the entire public API. It is intended to avoid accidentally exporting items that are not part of the API (such as library modules which were imported and used within the module).
    http://www.python.org/doc/2.4.2/ref/import.html

Discussions similaires

  1. R�ponses: 7
    Dernier message: 19/03/2007, 20h25
  2. R�ponses: 4
    Dernier message: 17/03/2007, 01h06
  3. setTimeout avec une m�thode priv�e
    Par Erakis dans le forum G�n�ral JavaScript
    R�ponses: 12
    Dernier message: 29/06/2006, 10h47
  4. C objet: pratique courante?
    Par Thierry Chappuis dans le forum C
    R�ponses: 13
    Dernier message: 07/02/2006, 12h22
  5. R�ponses: 8
    Dernier message: 04/06/2004, 09h13

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