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 :

Question sur la méthodologie


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 55
    Par défaut Question sur la méthodologie
    Bonjour à tous,

    Je suis encore débutant en python et je me pose encore des questions, si quelqu'un peut m'éclairer ?
    J'ai fait 2 petits scripts pour reproduire les cas : J'ai un capteur dont je lis sa mémoire et j'enregistre les résultats

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    from tkinter import tix, Frame,Button,Label,Entry, Listbox, Radiobutton, IntVar
     
    class Capteur(Frame):
     
        def __init__(self,parent):
            Frame.__init__(self, parent,bd=8)
            self.registre1 = 0
            self.registre2 = 0
            self.registre3 = 0
     
            self.b1 = Button(self, text="lecture_des_registres",command = self.lecture_des_registres)
            self.b1.grid(row=1, column=0)
            self.b2 = Button(self, text="enregistrement_des_registres",command = self.enregistrement_des_registres)
            self.b2.grid(row=1, column=1)
     
        def lecture_des_registres(self):
            print("lecture")
            self.registre1 = 8
            self.registre2 = 88
            self.registre3 = 888
     
     
        def enregistrement_des_registres(self):
            print("ecriture")
            with open("resultat.csv", "a") as fichier:
                    fichier.write(str(self.registre1)+','+str(self.registre2)+','+str(self.registre3)+'\n')    
     
     
    if __name__=="__main__":
     
        app = tix.Tk()
        appareil = Capteur(app)
        appareil.grid()
        app.mainloop()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    from tkinter import tix, Frame,Button,Label,Entry, Listbox, Radiobutton, IntVar
     
    class Capteur(Frame):
     
        def __init__(self,parent):
            Frame.__init__(self, parent,bd=8)
            self.registre1 = 0
            self.registre2 = 0
            self.registre3 = 0
     
            self.b1 = Button(self, text="lecture_des_registres",command = self.lecture_des_registres)
            self.b1.grid(row=1, column=0)
     
     
        def lecture_des_registres(self):
            print("lecture")
            self.registre1 = 1
            self.registre2 = 11
            self.registre3 = 111
     
     
     
    if __name__=="__main__":
     
        app = tix.Tk()
        appareil = Capteur(app)
        appareil.grid()
     
     
     
        def Enregistrement_resultat():
            print("ecriture")
            with open("resultat2.csv", "a") as fichier:
                    fichier.write(str(appareil.registre1)+','+str(appareil.registre2)+','+str(appareil.registre3)+'\n') 
     
        b1 = Button(app,text="Enregistrement_resultat",command = Enregistrement_resultat)
        b1.grid(row=1, column=0)
     
        app.mainloop()

    Qu'elle est la convention en ce qui concerne la récupération des attribues de mon objet ?
    • on les récupère dans la boucle principale ?
    • on les récupère dans l'objet ?
    • il y a-t-il un autre moyen plus rapide de récupérer leurs valeurs ?



    PS : J'aurai pu facilement me passer de la POO mais je l'ai fait ainsi car par la suite je pourrai avoir plusieurs capteurs. Les 2 méthodes fonctionnent mais je sais que mon manque d'expérience me fera peut-être partir vers le mauvais choix et qui au final se transformera en

    Merci d'avance
    Bonne journée

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    La première version est clairement plus logique. La classe représente en fait la fenêtre principale et c'est dans celle-ci que doivent être créés les widgets et non pas dispersés dans l'espace global comme tu fais dans la deuxième version avec le bouton b1. (hem, à mon avis ce serait plutôt b2).

    Maintenant, est-ce que la fonction d'enregistrement du fichier doit être dans cette classe ou ailleurs ça dépendra de l'importance de ton code.
    Disons qu'avec un code aussi simple cette fonction est très bien là où elle est.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Octobre 2002
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 55
    Par défaut
    Merci beaucoup d'avoir répondu VinsS

    En réalité mon code est beaucoup plus gros mais je voulais illustrer de façon simple pour que vous n'ayez pas à lire et à comprendre un code de 800 lignes (pour moi c'est beaucoup ). Mon problème c'est que j'ai plusieurs objets :
    Toujours un capteur (instance tk())
    • qui contient une carte mère (objet 1)
    • qui contient souvent une cellule (objet 2)
    • et parfois une deuxième cellule (objet 3)


    Et je me demandais si il fallait une méthode d'enregistrement par objet ou un enregistrement global car je peux tester :
    • que la carte mère
    • que la cellule
    • la carte mère + 1 cellule
    • la carte mère + 2 cellules


    Comment tu aborderais le problème ?

    Merci d'avance

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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