Pregunta

chicos, soy bastante nuevo en Python y el aprendizaje para construir una aplicación de interfaz gráfica de usuario (con wypython). Tengo una pregunta relacionada con la destrucción de objetos en Python. p.ej. en MyFrame tengo onNew (crear un nuevo documento) y onOpen (abrir un archivo) método.

En resumen, parece que esto.

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)

Ahora, quiero considerar "si el usuario haga clic en abierto o nuevo otra vez, después de que haga clic, ya sea antes."

Así que para las clases de ventana, yo podría llamar a la self.viewwindow.Destroy() a destry las ventanas. ¿qué pasa con el objeto de modelo de datos? Si primera llamada nueva: self.data=DataModel(), a continuación, llamar self.data=DataModel.from_file(...) abierto y re-asignar, ¿qué pasa con el viejo ejemplo? ¿Es necesario que yo o destrucción de pitón a gestionar esta destrucción?

¿Fue útil?

Solución

Python tiene recolección de basura. Mientras que usted no tiene ninguna referencia a la antigua colgante objeto a su alrededor será recogido.

Tan pronto como decir self.data = somethingElse entonces el viejo self.data no tendrá ninguna referencia a él (a menos que otro objeto tenía una referencia a self.data de su objeto).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top