伙计们,我是Python的新手,并学习它以构建GUI应用程序(与Wypython)。我有一个与Python中对象破坏有关的问题。例如,在我的框架中,我有新的(创建新文档)和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可以解决这一破坏?

有帮助吗?

解决方案

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

您说 self.data = somethingElse 然后是老 self.data 不会有任何引用(除非另一个对象对您的对象有参考 self.data).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top