Question

les gars, je suis plutôt nouveau pour python et apprendre à construire une application IUG (avec wypython). J'ai une question liée à la destruction d'objets en python. par exemple. dans la méthode myFrame je onNouveau (créer un nouveau document) et onOpen (ouvrir un fichier).

En bref, il ressemble à ceci.

def onNew
    self.data=DataModel()
    self.viewwindow=ViewWindow(self.data)


def onOpen
    dlg = wx.FileDialog(self, "Open file", os.getcwd(), "", "*.*", wx.OPEN)
        if dlg.ShowModal() == wx.ID_OK:
            self.data=DataModel.from_file(...)
            self.view=View(self.data)

maintenant, je veux considérer « si cliquez sur Ouvrir ou nouveau à nouveau l'utilisateur, après avoir cliquer soit avant. »

pour les classes de fenêtre, je pouvais appeler le self.viewwindow.Destroy() à Destry les fenêtres. Qu'en est-il l'objet de modèle de données? Si je suis appeler nouveau: self.data=DataModel(), puis appelez ouverte et réattribuer self.data=DataModel.from_file(...), qu'en l'ancienne instance? Ai-je besoin Destruct moi-même ou Python gérer cette destruction?

Était-ce utile?

La solution

Python a la collecte des ordures. Tant que vous n'avez pas références à l'ancien objet suspendu autour de la recueillir.

Dès que vous dites self.data = somethingElse alors l'ancien self.data n'aura pas de références à ce (à moins qu'un autre objet avait une référence à la self.data de votre objet).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top