salut! C'est Nukosuke! python a une bibliothèque intégrée qui importe dynamiquement un module appelé importlib, mais j'ai créé ma propre bibliothèque pour la rendre plus facile à utiliser!
En spécifiant le nom du package, vous pouvez importer dynamiquement les modules sous ** puis récupérer l'objet de classe défini dans le module! ** ** Plus précisément, vous pouvez écrire le code Python suivant!
project/
├ example.py
└ validator/
├ validator_a.py
├ validator_b.py
└ validator_c.py
class ValidatorA:
#Idem pour b et c
def valildate(self, input):
#Processus de validation
from autoload.module_loader import ModuleLoader
input = "foo bar baz"
loader = ModuleLoader()
#Charge automatiquement les modules sous le validateur et renvoie une liste d'objets de classe tels que ValidatorA
validator_classes = loader.load_classes("validator")
try:
#Instancier un objet de classe et exécuter une méthode
[clazz().validate(input) for clazz in validator_classes]
except:
print("input is invalid!!")
** C'est très utile lorsque vous voulez faire quelque chose ensemble! ** ** Ce qui suit est considéré comme un exemple de scène d'utilisation concrète.
Lors de la mise en œuvre d'un pipeline, cela ressemble à ceci: (Ceci est une image d'acquisition et de traitement de données en parallèle)
project/
├ example.py
└ pipelineA/
├ get_data_a.py
└ processing_data_a.py
└ pipelineB/
├ get_data_b.py
└ processing_data_b.py
from autoload.module_loader import ModuleLoader
package_names = ("pipelineA", "pipelineB")
loader = ModuleLoader()
#Il s'agit d'un traitement parallèle
for package_name in package_names:
GetData, ProcessingData = loader.load_classes(package_name)
data = GetData().get()
processed_data = ProcessingData().process(data)
Veuillez vous référer à cette page pour savoir comment l'utiliser!
À l'origine, j'ai personnellement créé un site qui note et introduit le niveau de recommandation des livres, mais j'applique plusieurs modèles de validation aux données du livre. J'avais besoin de.
J'ai cherché sur Google de diverses manières en pensant que je pouvais créer un module pour chaque modèle de validation et l'importer dynamiquement pour une bonne impression et exécuter la validation, mais cela ne semblait pas être le cas, alors je l'ai fait moi-même!
Je l'ai fait moi-même, mais je pensais qu'il pouvait être utilisé à des fins générales, alors je l'ai publié en tant que bibliothèque!
La contribution est la bienvenue car il y a encore des choses qui ne suffisent pas!
Recommended Posts