Guido van Rossum <gu...@python.org> added the comment: On Sat, Jul 24, 2010 at 3:21 PM, Terry J. Reedy <rep...@bugs.python.org> wrote: > > Terry J. Reedy <tjre...@udel.edu> added the comment: > > Guido clarified: >> Class scopes *do* behave differently from function scopes; >> outside a nested function, this should work: >> x = 1 >> class C(object): >> x = x >> assert C.x == 1 >> And I think it should work that way inside a function too. > > I take that to mean that > > x = 0 > def f() > x = 1 > class C(object): > x = x > assert C.x == 1 > f() > > should work, meaning that C.x==0 and UnboundLocalError are both wrong.
Indeed. > That would mean to me that in "The class’s suite is then executed in a new > execution frame (see section Naming and binding), using a newly created local > namespace and the original global namespace." the phrase "the original global > namespace" should be changed to "the surrounding namespaces". Those words sound like they were never revised since I wrote them for Python 0.9.8 or so... > I also think this from Guido > > "So, while for *function scopes* the rules are "if it is assigned anywhere in > the function, every reference to it references the local version", for *class > scopes* (outsided methods) the lookup rules are meant to be dynamic, meaning > "if it isn't defined locally yet at the point of reference, use the next > outer definition"." > > should somehow also be clearer, probably also in the class page, so that > people will neither expect an UnboundLocalError. FWIW, unless something drastically changed recently, the language reference is likely out of date in many areas. I would love it if a team of anal retentive freaks started going through it with a fine comb so as to make it describe the state of the implementation(s) more completely. ---------- _______________________________________ 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