Martin v. Löwis <mar...@v.loewis.de> added the comment: Reopening. The following piece of code changed it behavior between 2.5 and 2.6:
def f(): a = 2 class C: exec 'a = 42' abc = a return C print f().abc In 2.6, this returns 2, because static analysis determines that the read of 'a' comes from f's closure, yet the exec gets a new set of locals for the body of C where it stores into. This is highly counter-intuitive. For functions, the issue is resolved by banning exec; the same should (now) happen for classes. ---------- nosy: +loewis status: closed -> open _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue5578> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com