ho la seguente struttura di cartelle:Python - classe di importazione dinamica
- MyProject
- App1
- some_module1.py
- some_module2.py
- App2
- some_other_module1.py
- some_other_module2.py
Dentro ciascuno dei moduli (some_module1.py per esempio) c'è una classe che si estende da una classe base, nel mio caso, Produttore .
Quello che sto cercando di fare è caricare dinamicamente in questa classe. Per fare questo, ho una lista di "applicazioni installate", che assomiglia a questo:
INSTALLED_APPS = (
'App1',
'App2',
)
Sto cercando di scrivere una funzione che controllerà ogni pacchetto "app" per una particolare classe di produttore e garantire che si estende da la classe di base del produttore. Qualcosa di simile a questo:
module_class = 'some_module1.SomeClass'
# Loop through each package in the INSTALLED_APPS tuple:
for app in INSTALL_APPS:
try:
#is the module_class found in this app?
#App1.some_module1.SomeClass - Yes
#App2.some_module1.SomeClass - No
# is the class we found a subclass of Producer?
exception ImportError:
pass
Ho provato a sperimentare con imp e importlib, ma non sembra per gestire questo tipo di importazione. Devo comunque essere in grado di raggiungere questo obiettivo?
Spiacente: non è possibile capire cosa si desidera: lo pseudocodice non è chiaro. Python si prende cura delle classi abse provenienti dai posti giusti, salvezza. In modo che App1.Class_ appaia "Producer" così come è definito all'interno del modulo App1. – jsbueno
Scusa, ho cercato di essere il più chiaro possibile. Ho modificato il post e spero che abbia più senso. – Hanpan