Как python управляет удалением или уничтожением объекта

Ребята, я довольно новичок в python и изучаю его для создания приложений с графическим интерфейсом (с wypython). У меня есть вопрос, связанный с уничтожением объектов в Python. например, в myFrame у меня есть метод onNew (создать новый документ) и onOpen (открыть файл).

вкратце это выглядит так.

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)

Теперь я хочу рассмотреть вопрос: "Если пользователь нажимает кнопку" Открыть "или" Новый "снова, после того, как он щелкнул ранее".

поэтому для оконных классов я мог бы назвать self.viewwindow.Destroy() разрушить окна. как насчет объекта модели данных? Если я сначала позвоню новый: self.data=DataModel(), затем позвоните открыть и переназначить self.data=DataModel.from_file(...)как насчет старого экземпляра? Нужно ли мне уничтожать его самому, или python справится с этим уничтожением?

1 ответ

Решение

Python имеет сборку мусора. Пока у вас нет никаких ссылок на висящий вокруг него старый объект, он будет собран.

Как только вы говорите self.data = somethingElse тогда старый self.data не будет никаких ссылок на него (если другой объект не имеет ссылки на ваш объект self.data).

Другие вопросы по тегам