Pouvez-vous utiliser une chaîne à instancier une classe?

Je suis en utilisant un générateur de modèle pour séparer un tas de différentes possibilités de configuration. En gros, j'ai un tas de classes qui sont nommés d'un ID (quelque chose comme ID12345). Ces héritent toutes de la base de constructeur de classe. Dans mon script, j'ai besoin d'instancier une instance de chaque classe (environ 50) chaque fois que cette application s'exécute. Donc, je suis en train de voir si, au lieu de faire quelque chose comme ceci:

ProcessDirector = ProcessDirector()
ID12345 = ID12345()
ID01234 = ID01234()

ProcessDirector.construct(ID12345)
ProcessDirector.construct(ID01234)

ID12345.run()
ID01234.run()

Puis-je faire quelque chose comme ça (je sais que cela ne fonctionne pas):

IDS = ["ID12345", "ID01234"]

ProcessDirector = ProcessDirector()
for id in IDS:
  builder = id() #some how instantiate class from string
  ProcessDirector.construct(builder)
  builder.run()

De cette façon, quand j'ai besoin d'ajouter un nouveau dans le futur, tout ce que j'ai à faire est d'ajouter l'id de l'ID de liste, plutôt que de les émaillant le nouvel ID dans le code.

MODIFIER

Ressemble à il ya quelques opinions différentes sur la base où les données proviennent de. Ces Identifiants sont entrées dans un fichier que personne d'autre n'a accès. Je ne suis pas la lecture de la les chaînes à partir de la ligne de commande, et je voudrais être en mesure de faire aussi peu de modifications lors de l'ajout d'un nouveau code dans le futur.

  • Ces ID classes dans le même fichier que la boucle, ou voulez-vous de les importer à partir de quelque part d'autre?
  • Dupliquer: stackoverflow.com/questions/452969/...
  • ce n'est pas un doublon de cela, c'est un python question, pas un code java, la question que vous l'avez mentionné est demander si une fonction existe en python qui existe en java avec peu d'explication derrière elle, rappelez-vous que la question est de savoir comment les gens trouvent qu'il, pas les réponses donc, juste parce que il existe une réponse à l'autre question qui peut répondre à ça ne veut pas dire que les gens vont le trouver, à moins qu'ils pensent de la question en termes de java comme l'OP de la question.
InformationsquelleAutor scottm | 2009-02-16