come pitone gestire oggetto di cancellazione o la distruzione
-
28-09-2019 - |
Domanda
ragazzi, io sono piuttosto nuovo per python e di apprendimento per costruire un'applicazione GUI (con wypython). Ho una domanda in relazione con la distruzione oggetto in pitone. per esempio. in MyFrame ho onNew (creare un nuovo documento) e onOpen (aprire un file) metodo.
In breve, sembra che questo.
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)
Ora, voglio prendere in considerazione "se l'utente clicca aperto o nuovo di nuovo, dopo che fai clic o prima".
così per le classi di finestra, ho potuto chiamare il self.viewwindow.Destroy()
per Destry le finestre. per quanto riguarda l'oggetto del modello di dati? Se io chiamo primo nuovo: self.data=DataModel()
, quindi chiamare aperto e riassegnare self.data=DataModel.from_file(...)
, per quanto riguarda l'istanza precedente? Devo Destruct io stesso o Python gestire questa distruzione?
Soluzione
Python ha garbage collection. Finché non si hanno riferimenti al vecchio oggetto appeso intorno ad esso saranno raccolti.
Non appena si dire self.data = somethingElse
poi il vecchio self.data
non avrà alcun riferimenti ad esso (a meno che un altro oggetto aveva un riferimento alla self.data
del vostro oggetto).