我是编程的新手,我不明白垃圾回收的工作原理。在以下示例中:
import Tkinter as tk
a = 0
class Object1:
def __init__(self):
global a
a = tk.Frame()
a.pack()
b = tk.Button(a, text="click me", command=self.callback)
b.pack()
def callback(self):
print "clicked!"
program = Object2()
class Object2:
def __init__(self):
global a
a.destroy()
a2 = tk.Frame()
a2.pack()
b = tk.Label(a2, text='This is the second object.')
b.pack()
program = Object1()
tk.mainloop()
Object1实例的“程序”是否保留在最后?我是否必须以某种方式明确删除它?如果我多次重复此结构,并且每个Objectx都有一个按钮来破坏前一帧并添加一个包含新内容的新帧,那么随着程序的进行,会消耗越来越多的内存吗?谢谢你的帮助。
最佳答案
a
将引用“已销毁”的tk.Frame
要允许tk.Frame
被垃圾回收,您需要删除对该引用的引用
一种方法是设置a = None
,另一种方法是设置del a
当然,当程序实际结束时,所有内容都会释放
关于python - Python实例删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10526363/