[BangPypers] wierd class behavior

Anand Chitipothu anandology at gmail.com
Tue Dec 4 06:25:00 CET 2012


>
> What is really weird is that the class body is evaluated without
> considering the enclosed scope, but the methods defined in the class
> have access to the enclosed scope.

Found the culprit. Lets looks at the following code.

code = """
x = x+1
def f():
    return x
print(x, f())
"""

x = 5
exec(code)

x = 5
exec(code, globals(), {})

When exec is called without any locals, it works as we expected and x
in f is bound to the x in the code.

But when we supply a locals dict to exec, it behaves differently. The
x in f is bound to global x.

I'm not sure why we have this confusing behavior.

--
Anand
http://anandology.com/


More information about the BangPypers mailing list