Le module importlib vous permet de passer le nom du module "jeux1" en tant que chaîne de caractère.
Plutot qu'écrire:
eval("import {}.classesPerso as cPerso".format(RPG)
)
on devrait pouvoir faire marcher:
cPerso = importlib.import_module(RPG)
Ceci dit, je suis dubitatif sur la motivation:
Je trouve ma solution d'enchainer les "if RPG == "Jeu1": ... if RPG == "Jeu2": ..." peu élégante, car si j'ajoute un nouveau jeu il faudra que je revienne modifier cette méthode. Pas très évolutif donc.
Ce que j'en comprend c'est que vous avez un tas de jeux 1, 2, 3,...
Ces jeux devraient pouvoir être lancés indépendamment les uns des autres.
Ils ont un point d'entrée "main" ou équivalent.
Quelle est la fonction de votre code?
J'imagine bien le "lanceur": l'utilisateur choisi le jeu qu'il veut lancer dans une bibliothèque, une liste qu'on lui présente à l'écran.
Dans ce cas, plutôt que d'interfacer lanceur et jeux via "import", pourquoi ne pas lancer le jeu via subprocess?
Avec un module, tout dépendra des références qui restent "par ailleurs".
"subprocess" garantit qu'une fois le jeu fini, le ménage sera automatiquement fait.
A vous de voir.
- W
Partager