0

伙计们,我对 python 很陌生,并且正在学习它来构建一个 gui 应用程序(使用 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 和 re-assign self.data=DataModel.from_file(...),那么旧实例呢?我需要自己破坏它还是python会管理这种破坏?

4

1 回答 1

2

Python有垃圾收集。只要您没有对挂在它周围的旧对象的任何引用,就会被收集。

只要您说self.data = somethingElse,旧的self.data就不会引用它(除非另一个对象引用了您的对象self.data)。

于 2010-10-07T08:29:22.453 回答