Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit problème de compréhension

Sur un morceau de code du cours sur le site

    8 octobre 2012 à 21:59:18

    Bonjour,

    J'ai lu le cours sur ce site jusqu'à la troisième partie, sur les classes. Je commence le 1er chapitre et j'ai du mal à comprendre ce code :

    class TableauNoir:
        """Classe définissant une surface sur laquelle on peut écrire,
        que l'on peut lire et effacer, par jeu de méthodes. L'attribut modifié
        est 'surface'"""
    
        
        def __init__(self):
            """Par défaut, notre surface est vide"""
            self.surface = ""
        def ecrire(self, message_a_ecrire):
            """Méthode permettant d'écrire sur la surface du tableau.
            Si la surface n'est pas vide, on saute une ligne avant de rajouter
            le message à écrire"""
    
            
            if self.surface != "":
                self.surface += "\n"
            self.surface += message_a_ecrire
    


    Et lors du test :

    >>> tab = TableauNoir()
    >>> tab.surface
    ''
    >>> tab.ecrire("Coooool ! Ce sont les vacances !")
    >>> tab.surface
    "Coooool ! Ce sont les vacances !"
    >>> tab.ecrire("Joyeux Noël !")
    >>> tab.surface
    "Coooool ! Ce sont les vacances !\nJoyeux Noël !"
    >>> print(tab.surface)
    Coooool ! Ce sont les vacances !
    Joyeux Noël !
    >>>
    


    Je ne comprends pas comment self.surface fait à prendre en considération ce que l'on écrit ?
    De plus on a :


    if self.surface != "":
            self.surface += "\n"
    self.surface += message_a_ecrire
    


    self.surface est pourtant bien vide au départ ?!
    En fait ce qui se passe c'est que self.surface étant vide, on saute le if et on exécute self.surface += message_a_ecrire ; est-ce bien ça ?

    Merci d'avance à ceux qui essaieront de m'expliquer.
    Amicalement ;)
    • Partager sur Facebook
    • Partager sur Twitter
      8 octobre 2012 à 22:20:21

      C'est effectivement cela...
      En faisant tab.ecrire("message"), tu appelles la fonction def surface(self, message_a_ecrire), or cette fonction dit self.surface += message_a_ecrire, donc tu modifies self.surface en appelant la fonction ecrire ...
      Je ne sais pas si j'ai été clair...
      • Partager sur Facebook
      • Partager sur Twitter
        8 octobre 2012 à 22:35:44

        Salut :)

        Merci pour ta reponse. Seulement tu dis : , tu appelles la fonction def surface(self, message_a_ecrire), tu veux dire self.ecrire plutot ?
        • Partager sur Facebook
        • Partager sur Twitter
          8 octobre 2012 à 23:07:47

          il voulait dire le méthode TableauNoir.ecrire() plutôt ...
          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

            8 octobre 2012 à 23:15:02

            D'accord, merci à vous. C'est pas très clair, mais peut être en lisant la suite ça devrait aller
            • Partager sur Facebook
            • Partager sur Twitter
              9 octobre 2012 à 6:53:57

              Bonjour,

              Vu ta question, c'est plus l'orienté objet en général qui te pose visiblement problème.

              self.surface est un attribut : C'est une "variable" de la classe TableauNoir

              ecrire est une méthode : C'est une "fonction" dans la classe TableauNoir qui régit une règle sur l'attribut self.surface

              Lorsque tu créer l'objet tab, celui-ci prend l'architecture de ta classe TableauNoir, avec l'attribut self.surface et la méthode ecrire

              Quand l'objet est créé, __init__ est appelé par défaut pour initialisé l'attribut self.surface.

              Ensuite l'appel de la méthode ecrire, rajoutera le texte spécifié dans l'attribut self.surface
              • Partager sur Facebook
              • Partager sur Twitter
                9 octobre 2012 à 19:52:56

                Effectivement, c'est un principe de l'orienté objet que tu ne comprends pas... pourtant j'ai appris la POO avec le tutoriel de Python, et j'ai trouvé qu'il explique très clairement... peut-être qu'en lisant la suite, tu comprendras mieux...
                • Partager sur Facebook
                • Partager sur Twitter

                Petit problème de compréhension

                × 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