Martin v. Löwis <[email protected]> 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 <[email protected]>
<http://bugs.python.org/issue5578>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com