comment python gérer suppression ou la destruction objet
-
28-09-2019 - |
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?
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).