Python WeakValueDictionary retains values after gc.collect() in IPython

I'm trying to understand Python weakref module and its use cases, so I have the following setup: import gc, weakref class obj(object): def __init__(self, val=None): self._s = "Sample"...