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)
Get Python in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.