Вопрос

Ребята, я достаточно новичок в Python и изучаю его, чтобы построить приложение GUI (с Wypython). У меня есть вопрос, связанный с разрушением объекта в Python. Например, в MyFrame у меня есть onnew (создайте новый документ) и OnoPen (Open файл).

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

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 будет управлять этим разрушением?

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top