Partage
  • Partager sur Facebook
  • Partager sur Twitter

Maîtriser le nombre d'objets d'une classe

    6 avril 2020 à 6:53:52

    Bonjour,

    Dans mon petit programme, j'ai un bouton qui créé une fenêtre via une classe. Si je ferme cette fenêtre et que j'appuie de nouveau sur le bouton, une fenêtre de même nom va se créér. Et ainsi de suite... y-a-t-il une méthode pour éviter d'avoir une multitude d'objets identiques ?

    from tkinter import *
    
    fen = Tk()
    
    def Crea_Fen():
        fen_bis = FenSup(fen)
    
    def Voir():
        print(FenSup.fen_crees, FenSup.lab_crees)
    
    b = Button(fen, text='fenetre', command=Crea_Fen)
    b1 = Button(fen, text='voir', command=Voir)
    b.pack()
    b1.pack()
    
    
    class FenSup(Toplevel):
        fen_crees = 0
        lab_crees = 0
        def __init__(self, parent):
            super().__init__()
            FenSup.fen_crees += 1
            FenSup.lab_crees += 1
            l = Label(self, text='test')
            l.pack()
    
    
    fen.mainloop()



    -
    Edité par nirannor 6 avril 2020 à 6:54:11

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2020 à 8:56:13

      Elles ne sont pas identiques, leurs identifiants sont différents à chaque création.

      Quoi que j'ai un doute effectivement... :lol:

      Je pense que c'est de la gestion mémoire, en fait mais je suis pas sûr, on garde les cases mémoires utilisées pour les réutiliser dans le cas où on en est à nouveau besoin.

      Quel est le problème par rapport à ça, je comprend pas le soucis ?

      -
      Edité par fred1599 6 avril 2020 à 9:01:51

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        6 avril 2020 à 9:29:02

        fred1599 a écrit:

        Elles ne sont pas identiques, leurs identifiants sont différents à chaque création.

        Quoi que j'ai un doute effectivement... :lol:

        Je pense que c'est de la gestion mémoire, en fait mais je suis pas sûr, on garde les cases mémoires utilisées pour les réutiliser dans le cas où on en est à nouveau besoin.

        Quel est le problème par rapport à ça, je comprend pas le soucis ?

        -
        Edité par fred1599 il y a 21 minutes


        Je ne sais pas si c'est un problème mais je me posais la question, c'est tout. Mon ordinateur a un peu de mémoire, je devrais m'en sortir alors. ;)
        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2020 à 11:32:17

          nirannor a écrit:

          Si je ferme cette fenêtre et que j'appuie de nouveau sur le bouton, une fenêtre de même nom va se créér. Et ainsi de suite... y-a-t-il une méthode pour éviter d'avoir une multitude d'objets identiques ?

          Si fermer la fenêtre se fait par l'action sur la croix en haut à droite, l'objet Toplevel et tous les widgets enfants seront détruits. Et la mémoire rendue pourra être utilisée par d'autres objets.

          L'alternative à créer/détruire sera afficher/masquer. Elle peut être intéressante si le contenu est long à créer ou être réutilisé à différentes étapes. Une méthode pour gérer çà, s'appelle Singleton (un pattern de POO).

          • Partager sur Facebook
          • Partager sur Twitter
            7 avril 2020 à 6:48:47

            mps a écrit:

            nirannor a écrit:

            Si je ferme cette fenêtre et que j'appuie de nouveau sur le bouton, une fenêtre de même nom va se créér. Et ainsi de suite... y-a-t-il une méthode pour éviter d'avoir une multitude d'objets identiques ?

            Si fermer la fenêtre se fait par l'action sur la croix en haut à droite, l'objet Toplevel et tous les widgets enfants seront détruits. Et la mémoire rendue pourra être utilisée par d'autres objets.

            L'alternative à créer/détruire sera afficher/masquer. Elle peut être intéressante si le contenu est long à créer ou être réutilisé à différentes étapes. Une méthode pour gérer çà, s'appelle Singleton (un pattern de POO).


            Merci pour ta réponse. Dans mon cas, c'est l'action créer/détruire mais je note pour l'action afficher/masquer avec une classe Singleton.
            • Partager sur Facebook
            • Partager sur Twitter

            Maîtriser le nombre d'objets d'une classe

            × 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