On 1/15/2013 11:56 PM, rh wrote:
I have this working and I am curious to know how others do same.
class Abc(object):
def __init__(self):
pass
def good(self):
print "Abc good"
def better(self):
print "Abc better"
urls = {'Abc':'http://example.com'}
strings = ['good', 'better']
for s in urls:
o = eval("%s()" % s)
for string in strings:
eval("o.%s()" % string)
for s in urls:
o = globals()[s]()
for string in strings:
getattr(o,string)()
has same output. eval is seldom needed.
Of course, if you more sensibly use the class or an instance as key
urls = {Abc: 'http://example.com'}
urls = {Abc(): 'http://example.com'}
instead of the name, then o = s() or o = s directly.
While I'm at it what magic could I use to print "the-class-I-am-in good"
instead of hard-coding "Abc good"? I tried __class_ and self.__class__
self.__class__.__name__ or type(self).__name__)
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list