Aşağıdaki klasör yapısı vardır: benim durumumda, Temel sınıftan genişleten bir sınıf var modüllerin (örneğin some_module1.py) her İçindePython - Dinamik sınıf ithalat
- MyProject
- App1
- some_module1.py
- some_module2.py
- App2
- some_other_module1.py
- some_other_module2.py
, Yapımcı .
Yapmaya çalıştığım şey dinamik olarak bu sınıfa yüklenmektir. Belirli bir yapımcı sınıfı için her bir "uygulama" paketi kontrol ve uzanan sağlayacak bir işlev yazmaya çalışıyorum
INSTALLED_APPS = (
'App1',
'App2',
)
: Bunu yapmak için, ben şöyle "yüklü uygulamalar" bir listesi var üretici taban sınıfı. Böyle bir şey:
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
Ben imp ve importlib deneme denedim ama ithalat bu tür işlemek için görünmüyor. Bunu başarabilmem için zaten var mı?
Üzgünüz, ne istediğinizi bulmak mümkün değil - sözde kodunuz belirsiz. Python, doğru yerlerden gelen ulak sınıflarıyla ilgilenir, dostum. Böylece, herhangi bir App1.Class_, App1 modülünde tanımlandığı gibi "Producer" ı görecektir. – jsbueno
Üzgünüm, olabildiğince açık olmaya çalıştım. Gönderiyi düzenledim ve daha mantıklı olmasını umuyorum. – Hanpan