Benjamin Peterson <benja...@python.org> added the comment:

I'm not sure what I correct behavior is in this case. Consider the function 
equivalent:

x = 3
def f(x):
    def m():
        x = x
        print x
    m()
f(4)

which gives:

Traceback (most recent call last):
  File "x.py", line 7, in <module>
    f(4)
  File "x.py", line 6, in f
    m()
  File "x.py", line 4, in m
    x = x
UnboundLocalError: local variable 'x' referenced before assignment

The class example works because name namespaces are unoptimized, so failing to 
find a binding in the local (class) namepsace, Python looks at the globals and 
finds the global definition.

----------
nosy: +benjamin.peterson

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue9226>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to