Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les classes python

Anonyme
    13 août 2019 à 22:48:00

    Bonjour ,

    j'ai créé une classe ( .. ma première  ) comme type "agenda".

    Je pense qu'au niveau de la structure je suis pas mal (enfin je pense..)

    J'instancie avec une variable un objet de la classe et utilise une méthode de cette classe pour l'enregistrer dans un fichier une ligne par objet instancier

    Mais mon code me chagrine ... lol ...

    je pense qu'au niveau de l'écriture dans le fichier dans la méthode je me complique la vie mais je vois pas ou ...

    code ci-dessous :

    class agenda :
    
    	def __init__(self,Nom,Email,Tel,No,Rue,Ville) :
    		
    		self.Nom_prenom = Nom
    		self.Email = Email
    		self.Telephone = Tel
    		self.No = No
    		self.Rue = Rue
    		self.Ville = Ville
    
    	def ecriture(self) :
    		with open("fichier.txt","a") as fichier :
    			fichier.write(self.Nom_prenom+",")
    			fichier.write(self.Email+",")
    			fichier.write(self.Telephone+",")
    			fichier.write(self.No+",")
    			fichier.write(self.Rue+",")
    			fichier.write(self.Ville+"\n")
    
    
    
    agenda = agenda(\
    	Nom = input("Nom : "),\
    	Email = input("Email : "),\
    	Tel = input("Tel : "),\
    	No = input("N° : "),\
    	Rue = input("Rue : "),\
    	Ville = input("Ville : "))
    
    agenda.ecriture()



    Si une âme charitable voulais bien m'aider ... :) :) :)

    Merci par avance

    Mike

    • Partager sur Facebook
    • Partager sur Twitter
      14 août 2019 à 7:01:29

      Bonjour,

      Ton code est très bien. Il est propre, lisible et il fait ce qu'il faut.

      Tu peux éventuellement utiliser une f-string pour l'améliorer un peu.

      fichier.write(f'{self.nom},{self.email},...')

      Sinon la convention en général est de mettre les noms de classe en majuscule et les noms de variables en minuscules (avec des tirets entre les mots ou en camelCase).

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        14 août 2019 à 9:07:42

        Merci brubru777,

        En effet, je ne sais même pas pourquoi je n'y avais pas pensé... ^^


        çà fait encore moins de ligne de code et c'est d'autant plus lisible aussi ( c'est çà qui me chagrinais :) )

        ( J'aime l'approche de la perfection même si elle n'existe pas lol sinon je dors pas la nuit )


        Pour les conventions , oui je sais , C'est un peu mon coté rebelle qui veut faire comme il a envi mais qui sait se faire comprendre et décoder :lol:


        Encore Merci ..!! ..

        • Partager sur Facebook
        • Partager sur Twitter
          14 août 2019 à 13:43:00

          Je comprends le côté rebelle mais les conventions, ça sert surtout à faciliter la lecture de ton code.

          Pour ceux qui t'aident sur les forums, par exemple :)

          mais aussi pour toi quand tu le reliras dans quelques années.

          • Partager sur Facebook
          • Partager sur Twitter
            14 août 2019 à 14:49:32

            En principe, on s'attendrait à ce que ta méthode ecriture ait un paramètre (éventuellement nommé) pour le nom de fichier. Et puisque tu écris le contenu de l'agenda, on pourrait presque s'attendre que tu surcharges la méthode spéciale __str__ (même si c'est discutable) dont le contenu peut être envoyé dans un fichier en utilisant l'argument nommé file de print.

            Ton échappement de la fin de ligne n'est pas utile.

            -
            Edité par PascalOrtiz 14 août 2019 à 14:50:52

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              14 août 2019 à 19:38:19

              Bonjour PascalOrtiz,

              Je débute dans l'apprentissage de la programmation en Python ..

              je suis arrivé qu'au chapitre 2 (dictionnaire)

              Mais je garde en mémoire se que tu dis pour l'amélioration du code ... Merci ..!

              Bonjour brubru777,

              Bon ok .. lol .. je vais me forcer à suivre les conventions ... ;)

              Merci ..

              mike

              • Partager sur Facebook
              • Partager sur Twitter
                14 août 2019 à 21:54:55

                Lignes 23 à 29, les antislash en fin de ligne sont pas obligatoires quand on est entre des parenthèses.

                D'ailleurs il y a une astuce pour couper une chaine de caractères trop longue :

                "abcabcabc"
                # est équivalent à :
                ("abc"
                 "abc"
                 "abc")

                Et n'ajoutez pas de virgules, sinon ça fait un tuple.

                • Partager sur Facebook
                • Partager sur Twitter

                Blond, bouclé, toujours le sourire aux lèvres...

                  15 août 2019 à 14:32:32

                  Salut,

                  Je suis le seul à trouver que cette classe n'a pas le bon nom ? Un agenda n'est pas un objet comportant un nom, email, tel, etc. Cet objet s'appelle une Personne, ou encore un Contact. Un Agenda est une collection de Contacts.

                  Donc je verrais plutôt deux classes. La première contient les informations d'un Contact. La deuxième a des méthodes tels que ajouter(contact) et sauvegarder(nom_fichier). La première méthode permet d'ajouter un Contact à notre Agenda. Donc en interne, l'agenda aura un conteneur (une liste peut-être) dans laquelle il pourra stocker les Contacts qu'on lui fournit. Pour se sauvegarder, l'Agenda parcourt chaque Contact qu'il contient et l'inscrit dans un fichier. Ca lui permettrait ensuite de recharger les contacts depuis le disque.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    15 août 2019 à 20:19:32

                    Bonjour Dan737,

                    Je prends note ...

                    Après je débute, je n'ai pas encore toutes les notions et toutes les bonnes réflexions.

                    j'aurais les instincts du code optimisé en codant ...

                    Merci pour les observations que je prends de façon constructives.

                    Mike

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Les classes python

                    × 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