我正在尝试制作一个GUI,我需要能够删除Comic类(在Comics列表中)内的实例化对象。我还需要能够从名称列表中将其删除。(漫画名称)这是我找到要删除的对象的功能def delete_comic(): for c in comics: if c._name == delete_selected_comic.get(): c._delete_comic() update_label()这是我的类,函数和实际上删除对象的函数。class Comic: def __init__(self, name, stock): self._name = name self._stock = stock comics.append(self) comic_names.append(name) def _delete_comic(self): self._stock = 0 self._name = "" del self 将stock和name设置为0和blank并不会真正删除该对象,并且我不确定如何使用del self。关于如何删除此对象的任何帮助将不胜枚举。提前致谢
2 回答

回首忆惘然
TA贡献1847条经验 获得超11个赞
您不能删除其内部的对象。相反,您可以将其设置为,None并让垃圾收集器将其删除:
def delete_comic():
for i, c in enumerate(comics):
if c._name == delete_selected_comic.get():
comics[i] = None
update_label()
如果您确实要删除此处的对象,则可以执行以下操作:
def delete_comic():
delete_indicies = []
for i, c in enumerate(comics):
if c._name == delete_selected_comic.get():
delete_indicies.append(i)
for i in delete_indicies:
del comics[i]
update_label()

慕码人8056858
TA贡献1803条经验 获得超6个赞
del self
几乎什么都不做-它只会删除名为self的局部变量。但这不是对实例的最后引用(它仍然存在于您的列表中,甚至可能存在于调用方法中),因此该对象将继续存在。
为了有效地删除该对象,请在列表中以及其他可能存储的地方删除其引用。
del comics[desired_index]
添加回答
举报
0/150
提交
取消