Python 如何管理对象删除或销毁

0 投票
1 回答
1170 浏览
提问于 2025-04-16 05:07

大家好,我刚开始学习Python,想用它来做一个图形界面应用(用wypython)。我有个关于Python中对象销毁的问题。

简单来说,我的代码大概是这样的。

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会自动处理这个销毁?

1 个回答

2

Python有垃圾回收功能。只要你没有任何地方还在使用旧的对象,它就会被清理掉。

当你执行 self.data = somethingElse 这行代码时,旧的 self.data 就不会再有任何引用了(除非其他对象还在使用你对象的 self.data)。

撰写回答