type(), modules: clarification please

Shane gshanemiller at verizon.net
Sat Oct 15 19:00:17 EDT 2011


Hi,

When one writes,

> className='Employee'
> baseClasses = ...
> dictionary = { ... }
> newClass = type( className, <baseClasses>, dictionary)

in what module does newClass belong? If it's the current module what
code
do I run to print out the name of that module in a.b.c... form?

Related: If I want to make `newClass' into a module called, say,
a.b.c.d.e
how do I do that? This doesn't work:

> className='a.b.c.d.e.Employee'
> newClass = type( className, <baseClasses>, dictionary)

As far as I know the correct procedure involves three steps:
> import a.b.c.d.e as targetModule
> newClass = type( className, <baseClasses>, dictionary)
> setattr( targetModule, 'newClassInTarget', newClass )
> obj = targetModule.newClassInTarget()

I am not sure if newClass remains a valid type in whatever module it
was
created in.

Final question. If, as an academic exercise I wanted to recursively
dump
all the classes in a module (and its sub-modules) would I do this? [I
use
some pseudo code]:

def dump( namespace ):
       for i in dir(namespace):
              if i is a class:
                   print i
              elif i is a module:
                   dump(i)

dump( <top-level-module> )

Thank you



More information about the Python-list mailing list