From: Kevin J. B. <jyt...@sa...> - 2003-11-18 05:17:09
|
> From: Danny Yoo <dy...@hk...> >On Mon, 17 Nov 2003, Frank Cohen wrote: > > >>Is there a way to instantiate a class where the name of the class is an >>element in a list. Here's what I am after: >> >>class a: >> def __init__( self ): >> print "i am in a" >> >>class b: >> def __init__(self): >> print "I am in b" >> >>c = [ "a", "b" ] >> >>mya = c[0]() >> >>Not sure how to do the last command. >> >> You're missing one word/function call.... >But yes, it's possible to do this, if we use a dictionary to map between >strings and class construction: >... >lookup = {'a' : a, > 'b' : b} >mya = lookup['a']() > > Or go one step further, and use the 'globals' dictionary Python creates for you: >>> mya = globals()[ c[0] ]() i am in a >>> Or: >>> instances = [ globals()[i]() for i in c ] i am in a I am in b >>> Though that's really pushing the limits of parens & brackets for my taste... ;-) kb |