Chargement dynamique de classes - Python - Programmation
Marsh Posté le 13-02-2013 à 12:02:48
C'est comme tu préfères. Tu as déjà une classe de base donc 3 peut être appliqué directement.
Et pas besoin d'un star-import pour charger les classes, `import mappers` devrait suffire.
Marsh Posté le 11-02-2013 à 17:02:10
Hello,
Je suis en train de développer un petit script pour utiliser la fonctionnalité ENC (External Node Classifier) de puppet.
Le but de mon programme est que pour un mot clé donné (qui correspond à un objectClass dans un annuaire LDAP), une classe Python réalise un job.
Je possède donc un module python "mappers" avec dedans un fichier __init__.py et un ensemble de classes :
- AbstractMapper qui est une classe "abstraite" représentant un mapper
- un mapper par service (NtpServiceMapper, NetworkInterfaceMapper, TomcatInstanceMapper, etc...)
Le but est que le chargement de ces classes soit dynamique, pour que quand on souhaite ajouter un nouveau service, il suffit d'ajouter le schéma LDAP, la classe python (et bien sur, l'utiliser dans l'annuaire...).
Je voudrais donc avoir un système de factory, qui dit que pour un objectClass donné, j'associe un mappeur via une instanciation de sa classe.
Si je vois comment faire tout simplement dans plusieurs langages, comme Java ou PHP, j'ai un peu plus de mal avec Python... En java, j'aurais défini un bloc static {} dans chacun de mes mappers, qui se seraient référencés tout seul auprès de la factory, via la ligne suivante :
Est-il possible d'avoir un comportement plutôt similaire en Python ?
Depuis mon code principal, j'ai déjà réussi (je pense) à charger toutes les classes en ajoutant le dossier "mappers" (présent dans le même répertoire que mon script, soit __file__) et en faisant un :
Merci d'avance pour vos réponses, je suis sur que ça doit être "tout con", mais bon..