Bonjour,
Je réalise un petit programme en Python visant à visualiser des feuilles de personnages pour des jeux de rôles. Comme je veux pouvoirs utiliser ce programme pour plusieurs jeux différents, j'aimerais pouvoir garder l'architecture générale du programme, et personnaliser certaines classes/fonctions dans des modules dédiés, regroupés au sein de packages spécifiques au jeu.
J'ai donc créé dans mon programme principal une fonction setRPG dont l'objectif est d'importer les modules ad-hoc.
L'idée était ensuite d'appeler les classes et fonctions en utilisant les mêmes noms :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 def setRPG(self,RPG): """ Définit le package correspondant au jeu de rôle choisit. Importe les modules correspondants. """ if RPG == "Jeu1": import Jeu1.classesPerso as cPerso if RPG == "Jeu2": import Jeu2.classesPerso as cPerso
Malheureusement, en faisant cela, le nom cPerso n'est reconnu que dans la fonction setRPG, mais plus dès que j'en sors. Le code précédent renvoie une erreur me disant que le nom "cPerso" n'est pas défini. Par contre, si j'ajoute la ligne de création du personnage à la fin de ma fonction setRPG, cela fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 setRPG("Jeu1") Perso1 = cPerso.Personnage()
L'idée des modules me semblait naturelle pour gérer cela, mais il semble que ce ne soit pas si évident. J'ai eu beau chercher, je n'ai pas trouvé de moyen d'importer un module dans un espace de nom plus général que celui où la commande "import" est lancé.
A votre avis, comment puis-je faire ? La solution de packages différents pour chaque jeu est-elle pertinente ?
Partager