Alexander Myodov wrote:
> Or maybe you have an idea how this can be fixed? The
> simplest way I see is putting all the "controlled" variables into a
> dedicated class... and do that each time for each block of variables I
> need control lifetime. Is there any simpler way?
I wouldn't use the word "fixed", but I suppose if you must you could do
something like:
>>> import contextlib
>>> @contextlib.contextmanager
def controlled(**kw):
class Bunch: pass
obj = Bunch()
obj.__dict__.update(kw)
yield obj
obj.__dict__ = {}
>>> with controlled(a=5, b=[1, 2, 3]) as k:
print k.a, k.b, dir(k)
5 [1, 2, 3] ['__doc__', '__module__', 'a', 'b']
>>> print dir(k)
['__doc__', '__module__']
So the lifetime of the variable is still not limited, but the lifetime of
its attributes is. I still don't see what that buys you though.
--
http://mail.python.org/mailman/listinfo/python-list