Scott David Daniels <[EMAIL PROTECTED]> wrote: > Alex Martelli wrote: > > My favourite way to use weakref is slightly different: I would have > > aptbase.drawables = weakref.WeakValueDictionary > typo here: > aptbase.drawables = weakref.WeakValueDictionary() > > then in each __init__ > > aptbase.drawables[len(aptbase.drawables)] = self > > then in show: > > for o in aptbase.drawables.values(): > > # render it > The keys you are choosing are probably not a good idea. > Problem demo: > > a,b,c = Something(), Something(), Something() > b = None > d = Something() # overwrites the d entry. > > I'd use: > aptbase.drawables[id(self)] = self
Good point -- the id isn't going to be reused until self is gone, of course. I normally use a monotonically increasing counter (global or in self's class), but there's no real reason for that -- id is simpler (and using len as I had is definitely bugprone, as you mention). Alex -- http://mail.python.org/mailman/listinfo/python-list