是否可以删除一个类的实例,该类自动将其从所有列表中删除?

use*_*532 3 python class list instance del

我有一个实例,class它在多个lists中显示为一个元素.我想删除该实例,同时将其从每个list元素中删除.这可能吗?

Rob*_*tts 7

对此的一个答案是始终允许您放入列表的对象管理列表成员资格.例如,而不是说

listA.append(objectA)
Run Code Online (Sandbox Code Playgroud)

你会用的

objectA.addToList(listA)
Run Code Online (Sandbox Code Playgroud)

这将允许您在内部存储包含的所有列表的列表objectA.然后,当你想删除时objectA,你需要调用这样的方法:

def cleanup(self):
    for listToClean in myLists:
        listToClean.remove(self)
Run Code Online (Sandbox Code Playgroud)

这确实给你的程序带来了一些强大的限制 - 例如,如果副本是由这些列表中的一个组成的,那么这些对象将没有对该副本的引用.您必须假设列表的任何副本(不要忘记切片也是副本)可能在其中包含过时的对象,这意味着您希望尽可能频繁地使用原始列表.

  • 不错的OO解决方案.如果你想在并行或多线程环境中使用它,让一些对象修改任意列表,它不一定封装可能会导致一些实际问题. (3认同)