[Tutor] Re: compute class name

Emile van Sebille emile@fenx.com
Thu Oct 31 20:19:01 2002


Ulrich Wisser:
> I would like to create new object instances, but compute the
> class name. Simple example
> 

#----test1.py----
class Test:
    pass

if __name__ == '__main__':
    name = 'Test'
    t = globals()[name]()
    print t

    # now import this module
    import test1
    t1 = test1.__dict__[name]()
    print t1
#---end---

Another thing you could try is directly using a dict:

class OptA:pass
class OptB:pass
class OptC:pass
class OptD:pass

opts = {'OptA':OptA, 'OptB':OptB, 'OptC':OptC, 'OptD':OptD,}

import random

thisclass = random.choice(opts.keys())

ineeda = opts[thisclass]()

print thisclass, ineeda


HTH,

--

Emile van Sebille
emile@fenx.com

---------