как python управляет удалением или уничтожением объекта - PullRequest
0 голосов
/ 07 октября 2010

ребята, я довольно новичок в 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(), чтобы уничтожить окна. как насчет объекта модели данных? Если я сначала вызываю new: self.data=DataModel(), затем вызываю open и переназначаю self.data=DataModel.from_file(...), как насчет старого экземпляра? Нужно ли мне уничтожать это сам, или python справится с этим уничтожением?

1 Ответ

2 голосов
/ 07 октября 2010

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

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

...