On 5 Mar, 18:59, "Arnaud Delobelle" <[EMAIL PROTECTED]> wrote: [snip] > Well in fact I couldn't help but try to improve it a bit. Objects now > don't need a callerclass attribute, instead all necessary info is > stored in a global __callerclass__. Bits that didn't work now do.
OK that wasn't really thought through. Because I changed the design mid-way through writing it __callerclass__ wasn't doing the right thing. I've sorted the issues I could see and made it (hopefully) thread-safe. I'm not going to pollute this list again with my code so I've put it at the following address: http://marooned.org.uk/local.py The problem is that all normal functions need to be decorated with '@function' for it to work completely: if I understand correctly the snippet below should raise an exception. It only does so if 'f' is decorated with '@function' as below. ---------- @function def f(x): x.l() class C(Object): @localmethod def l(self): print "Shouldn't get here" def v(self): return f(self) C().v() # Raises LocalMethod exception ---------- PS: in fact I'm not sure it's a good idea to decorate local methods: what about local attributes which are not methods? They have to be treated differently as only functions can be decorated. What about functions / classes which are local to a module? -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list