Frage

Jungs, ich bin ziemlich neu in Python und lernen es eine GUI-Anwendung zu bauen (mit wypython). Ich habe eine Frage im Zusammenhang mit dem Objekt Zerstörung in Python. z.B. in MyFrame Ich habe OnNew (ein neues Dokument erstellen) und onOpen (eine Datei öffnen) -Methode.

kurz, sieht es so aus.

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)

Nun, ich mag prüfen „wenn der Benutzer öffnen klicken oder wieder neu, nachdem er entweder vor klicken.“

so für die Fensterklassen, konnte ich die self.viewwindow.Destroy() nennen, die Fenster Destry. was ist mit dem Datenmodell-Objekt? Wenn ich zum ersten Mal neue nennen: self.data=DataModel(), ruft dann geöffnet und wieder assign self.data=DataModel.from_file(...), was ist mit der alten Instanz? Benötige ich es selbst zerstören oder Python wird diese Zerstörung verwalten?

War es hilfreich?

Lösung

Python hat Garbage Collection. Solange Sie auf das alte Objekt hängen alle Verweise haben nicht drum herum gesammelt werden.

Sobald Sie sagen self.data = somethingElse dann die alte self.data werden keine Verweise darauf haben (es sei denn, eine andere Aufgabe einen Verweis auf das Objekt der self.data hatte).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top