On Mon, 2007-12-03 at 18:27 -0800, hdante wrote: > (note, you don't want to do this, it's a proof of concept) > > import sys > > class A(object): > def __init__(self): > pass > def m1(self, x = None): > if x == None: > x = sys._getframe(1).f_locals > ab = 'aB' > x[ab].i = 10 > del x[ab] > print 'No more B' > class B(object): > def __init__(self, i): > self.i = i > def __del__(self): > print 'delete B' > > aA = A() > aB = B(i = 6) > print str(aB.i) > aA.m1() > print str(aB.i)
That's not much of a proof of anything. It only works because the last block happens to only use globals. If you stick it inside a function with local names, it'll cease to "work". The bottom line is that you can not modify the namespace of the caller within a function, unless you only use globals, and I hope I don't have to tell you what a fundamentally bad idea that is. My question to the OP is, what are you actually trying to accomplish? -- Carsten Haese http://informixdb.sourceforge.net -- http://mail.python.org/mailman/listinfo/python-list