为了账号安全,请及时绑定邮箱和手机立即绑定

删除tkinter中的类中的实例化对象?

删除tkinter中的类中的实例化对象?

红糖糍粑 2021-05-13 14:01:00
我正在尝试制作一个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()


查看完整回答
反对 回复 2021-05-25
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

del self几乎什么都不做-它只会删除名为self的局部变量。但这不是对实例的最后引用(它仍然存在于您的列表中,甚至可能存在于调用方法中),因此该对象将继续存在。

为了有效地删除该对象,请在列表中以及其他可能存储的地方删除其引用。

del comics[desired_index]


查看完整回答
反对 回复 2021-05-25
  • 2 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号