Stefan Seefeld wrote:
Bernhard Herzog wrote:

When "foo = Foo" is executed, Foo is first looked up in that new locals
dictionary.  That fails, so it's also looked up in the globals
dictionary a.  That fails as well because Foo was bound in b.  The final
lookup in the builtins also fails, and thus you get an exception.

Yes, from the experiment I just did, that does seem to be what is happening.

Thanks for the explanation ! I'm still unable to make a conclusion:
What is wrong ? Am I doing something stupid...? Or is that really a bug?

It seems to be a hangover from the old two-scope system where local scopes didn't nest. It probably qualifies as a bug, since it differs from the modern behaviour of a class definition inside the local scope of a function.

However, if your intention is to define the classes in
the global dict then yes, you are doing something wrong --
you should be passing the same dictionary for both scopes:

  g = {}
  exec stuff_to_define in g, g
  # definitions are now in g

--
Greg Ewing, Computer Science Dept,
University of Canterbury,       
Christchurch, New Zealand
http://www.cosc.canterbury.ac.nz/~greg
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to