Name
WeakValueDictionary
Synopsis
class WeakValueDictionary(adict={ })A WeakValueDictionary
d
is a mapping that references its values weakly. When the reference
count of a value v in
d goes to 0, all items
of d such that
d
[
k
]
is
v disappear.
adict is used to initialize the mapping.
WeakKeyDictionary and
WeakValueDictionary are useful when you need to
non-invasively associate additional data with objects without
changing the objects. Weak mappings are also useful to non-invasively
record transient associations between objects and to build caches. In
each case, the specific consideration that can make a weak mapping
preferable to a normal dictionary is that an object that is otherwise
garbage-collectable is not kept alive just by being used in a weak
mapping.
A typical use could be a class that keeps track of its instances, but does not keep them alive just in order to keep track of them:
import weakref
class Tracking:
_instances_dict = weakref.WeakValueDictionary( )
_num_generated = 0
def __init__(self):
Tracking._num_generated += 1
Tracking._instances_dict[Tracking._num_generated] = self
def instances( ): return _instances_dict.values( )
instances = staticmethod(instances)Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access