Как Python управляет объектом Delete или разрушению
-
28-09-2019 - |
Вопрос
Ребята, я достаточно новичок в 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
).