Мне нужен список слабых ссылок, который удаляет элементы, когда они умирают. В настоящее время единственный способ сделать это - сохранить очистку списка (удаление мертвых ссылок вручную).
Я знаю, что есть WeakKeyDictionary и WeakValueDictionary, но я действительно после WeakList, есть ли способ сделать это?
Вот пример:
import weakref
class A(object):
def __init__(self):
pass
class B(object):
def __init__(self):
self._references = []
def addReference(self, obj):
self._references.append(weakref.ref(obj))
def flush(self):
toRemove = []
for ref in self._references:
if ref() is None:
toRemove.append(ref)
for item in toRemove:
self._references.remove(item)
b = B()
a1 = A()
b.addReference(a1)
a2 = A()
b.addReference(a2)
del a1
b.flush()
del a2
b.flush()