Les noms de variables peuvent être spécifiés dynamiquement, les fichiers peuvent être lus dynamiquement et des fonctions et classes peuvent être incorporées.
ham1.py
import sys
#Propre module
myself = sys.modules[__name__]
#Ajout du membre jambon (équivalent à la déclaration de la variable jambon)
myself.__dict__['ham'] = 'Ham'
#Jambon de sortie
print(ham)
#>>> Ham
ham2.py
import sys
import glob
import os.path
import importlib
#Importez à l'avance le répertoire (package d'espace de noms) qui contient le module chargé dynamiquement.
import dynamic_hams
#Obtenez votre propre module
myself = sys.modules[__name__]
seq = 0
for mods_dir in dynamic_hams.__path__:
# dynamic_Obtenez la liste des fichiers py dans hams (pyc est omis cette fois)
mod_paths = glob.glob(os.path.join(mods_dir, '*.py'))
for mod_path in mod_paths:
#Nom de fichier sans extension
mod_name = os.path.basename(mod_path).split('.')[0]
#Module d'importation
# 'import dynamic_hams.ham'Équivalent à
mod = importlib.import_module('dynamic_hams.' + mod_name)
#S'attribuer les membres du module
myself.__dict__['incubate'+str(seq)] = mod.incubate
seq += 1
#La fonction d'incubation étant affectée à elle-même, elle peut être appelée à partir d'autres modules.
incubate0()
incubate1()
...
Python: How to get current module object - python.todaysummary.com 31.5. Importlib - L'implémentation d'import - Documentation Python 3.4.2
Recommended Posts