Partage
  • Partager sur Facebook
  • Partager sur Twitter

[python] modificateur d'accès

ca existe en python?

Sujet résolu
    11 mars 2006 à 22:15:52

    bonjour je m'interresse doucement au python, et je suis le cours qu'on peut trouver sur le site de l'ulg.
    J'ai parcouru la partie qui parle des classes. Bien sur, il parle de l'encapsulation et clâme haut et fort son utilité mais il ne parle pas de modificateur d'accès sur les variables d'instance et par défaut les variables d'instance sont accessibles partout. Donc les données ne sont pas encapsuler et cela viole un des principes de la programmation objet. alors voilà je me demandais
    est-ce que le rédacteur du cours à simplement oublié d'en parler ou bien sa n'existe pas
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 mars 2006 à 23:10:05

      Alors si j'ai bien compris ce dont on parlait, c'est les fameux attributs "publics" et "privés" c'est ça ?

      Apparemment en Python c'est très moche : un truc privé a son nom qui commence par __

      class Foo(object):
          __prive = 5
          public = 5

      foo = Foo()
      print foo.__prive
      print foo.public


      Provoquera une exception.

      Edit : mais il semble qu'on puisse quand même accèder à certains objets qui commencent par __ comme par exemple __call__ pour les fonctions ou __add__ pour les chaînes (mais pas pour les entiers).
      • Partager sur Facebook
      • Partager sur Twitter
        11 mars 2006 à 23:20:37

        merci de cette réponse claire et précise.

        j'avais cru un instant le python dépourvu de modificateur d'acces, me voilà rassuré :p
        • Partager sur Facebook
        • Partager sur Twitter
          12 mars 2006 à 8:57:55

          Cay pas pareil, __call__ c'est une méthode spécial, donc c'est fait pour :p

          En fait t'as les publics, les __private, et les __speciales__.
          • Partager sur Facebook
          • Partager sur Twitter
            12 mars 2006 à 10:00:10

            Bonjour,
            Tu peux le faire comme ça (avec les __) Au moin ça marche. Mais en pratique, comme le language python évolue et que les méthodes spéciales commencent aussi toutes par __ (comme __str__, _repr__ et plein d'autres :p ), on en met un seul (_priveVariable par exmple). Ca n'a pas le même effet, mais si les programmeurs qui récupèrent ta source rescpectent la convention comme quoi cette variable est privé, ça fait pareil.
            En somme, tu fais ce que tu veux mais fais gaffe à pas prendre des noms qui risqueraient d'être prit par python durant son évolution :) ou utilise plus simple le _prive



            Bisous, Nyu
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              12 mars 2006 à 10:33:01

              Citation : bluestorm

              Cay pas pareil, __call__ c'est une méthode spécial, donc c'est fait pour :p

              En fait t'as les publics, les __private, et les __speciales__.



              Merçey :)
              • Partager sur Facebook
              • Partager sur Twitter

              [python] modificateur d'accès

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown