Martin Maly wrote: > I came across a case which I am not sure if by design or a bug in Python > (Python 2.4.1 (#65, Mar 30 2005, 09:13:57)). Consider following Python > module: > > # module begin > "module doc" > > class c: > print __doc__ > __doc__ = "class doc" (1) > print __doc__ > > print c.__doc__ > # module end > > When ran, it prints: > > module doc > class doc > class doc > > Based on the binding rules described in the Python documentation, I > would expect the code to throw because binding created on the line (1) > is local to the class block and all the other __doc__ uses should > reference that binding. Apparently, it is not the case. > > Is this bug in Python or are __doc__ strings in classes subject to some > additional rules?
it's not limited to __doc__ strings, or, for that matter, to attributes: spam = "spam" class c: print spam spam = "bacon" print spam print len(spam) def len(self): return 10 print c.spam the language reference uses the term "local scope" for both class and def-statements, but it's not really the same thing. the former is more like a temporary extra global scope with a (class, global) search path, names are resolved when they are found (just as in the global scope); there's no preprocessing step. for additional class issues, see the "Discussion" in the nested scopes PEP: http://www.python.org/peps/pep-0227.html hope this helps! </F> _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com