[Tutor] __cmp__() method examples?

Michael P. Reilly arcege@speakeasy.net
Fri, 7 Dec 2001 11:45:29 -0500

On Wed, Dec 05, 2001 at 09:35:47PM -0600, Rob McGee wrote:

> # now generate class instances -- this is always done automatically
> from string import uppercase
> for letter in uppercase:
>   execStr = letter + ' = Project("' + letter + '")'
>   # example -- 'A = Project("A")', 'Z = Project("Z")
>   exec(execStr)
> {/code}
> (Sorry about the exec's, but I really don't know another way to do what
> I want. I want these instances in the global namespace, and I need to
> know exactly what each one is named. At least I think I do. Suggestions
> about other ways to approach this would be welcomed, too. :) Like with
> no exec's, or with the instances in something other than globals(), how
> would I be able to retrieve and alter their properties?)

If you _really_ need have these as globals to that module, then you
can always import the module to a variable, then set the attributes
of that module:

# the name of the current module is in '__name__'
thismod = __import__(__name__)
from string import uppercase
for letter in uppercase:
  # same as module.A = Project("A")
  setattr(thismod, letter, Project(letter))

This is probably a better method than using exec.  But you might
also want to think about a different structure than global variables.