Can you use a string to instantiate a class?
If you wanted to avoid an eval(), you could just do:
id = "1234asdf"
constructor = globals()[id]
instance = constructor()
Provided that the class is defined in (or imported into) your current scope.
Not sure this is what you want but it seems like a more Pythonic way to instantiate a bunch of classes listed in a string:
class idClasses:
class ID12345:pass
class ID01234:pass
# could also be: import idClasses
class ProcessDirector:
def __init__(self):
self.allClasses = []
def construct(self, builderName):
targetClass = getattr(idClasses, builderName)
instance = targetClass()
self.allClasses.append(instance)
IDS = ["ID12345", "ID01234"]
director = ProcessDirector()
for id in IDS:
director.construct(id)
print director.allClasses
# [<__main__.ID12345 instance at 0x7d850>, <__main__.ID01234 instance at 0x7d918>]