From: Frank C. <fc...@pu...> - 2003-11-18 02:05:25
|
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. -Frank -- Frank Cohen, PushToTest, http://www.PushToTest.com, phone: 408 374 7426 Free open-source test automation solutions that test and monitor Web-enabled applications, especially Web Services, for scalability and reliability. |
From: Danny Y. <dy...@hk...> - 2003-11-18 02:13:27
|
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. Hi Frank, This isn't really Jython specific; it's more of a basic Python question. But yes, it's possible to do this, if we use a dictionary to map between strings and class construction: ### class a: def __init__( self ): print "i am in a" class b: def __init__(self): print "I am in b" lookup = {'a' : a, 'b' : b} mya = lookup['a']() ### The 'lookup' dictionary here allows us to grab at our 'a' class, since we are storing classes as values in our dictionary. If you have more general Python-learning questions, please feel free to join the Python-tutor mailing list: http://mail.python.org/mailman/listinfo/tutor Good luck to you! |
From: Kent J. <ken...@sk...> - 2003-11-18 14:51:15
|
At 6:05 PM -0800 11/17/03, 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" ] If you don't actually need the class names in c you can write c = [ a, b ] then mya = c[0]() will work directly Kent > >mya = c[0]() > >Not sure how to do the last command. > >-Frank > > >-- >Frank Cohen, PushToTest, http://www.PushToTest.com, phone: 408 374 7426 >Free open-source test automation solutions that test and monitor Web-enabled >applications, especially Web Services, for scalability and reliability. > > > >------------------------------------------------------- >This SF. Net email is sponsored by: GoToMyPC >GoToMyPC is the fast, easy and secure way to access your computer from >any Web browser or wireless device. Click here to Try it Free! >https://www.gotomypc.com/tr/OSDN/AW/Q4_2003/t/g22lp?Target=mm/g22lp.tmpl >_______________________________________________ >Jython-users mailing list >Jyt...@li... >https://lists.sourceforge.net/lists/listinfo/jython-users |
From: Oti <oh...@ya...> - 2003-11-18 23:11:54
|
[ Frank Cohen ] > 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. and yet another way, maybe not so elegant and more brute force, but sometimes handy: >>> class a: ... def __init__(self): ... print "i am in a" ... >>> class b: ... def __init__(self): ... print "i am in b" ... >>> list = ['b', 'a'] >>> exec "%s()" % list[0] i am in b >>> exec "%s()" % list[1] i am in a >>> Best wishes, Oti. |