मैं निम्न फ़ोल्डर संरचना है:अजगर - गतिशील वर्ग आयात
- MyProject
- App1
- some_module1.py
- some_module2.py
- App2
- some_other_module1.py
- some_other_module2.py
मॉड्यूल (उदाहरण के लिए some_module1.py) वहाँ एक वर्ग है कि एक आधार वर्ग से फैली हुई है, मेरे मामले में है में से प्रत्येक के अंदर, निर्माता ।
जो मैं करने की कोशिश कर रहा हूं वह इस वर्ग में गतिशील रूप से लोड हो रहा है।
INSTALLED_APPS = (
'App1',
'App2',
)
मैं एक समारोह है कि एक विशेष निर्माता वर्ग के लिए प्रत्येक "एप्लिकेशन" पैकेज की जाँच करें और सुनिश्चित करें कि यह तक फैली हुई है जाएगा लिखने के लिए कोशिश कर रहा हूँ: ऐसा करने के लिए, मैं "इंस्टॉल किए गए एप्लिकेशन" है कि इस तरह दिखता है की एक सूची है निर्माता बेस क्लास। कुछ इस तरह:
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
मैं इम्प और importlib के साथ प्रयोग करने की कोशिश की है, लेकिन यह आयात के इस प्रकार संभाल करने के लिए प्रतीत नहीं होता। क्या यह मेरे लिए इसे प्राप्त करने में सक्षम है?
क्षमा करें - यह पता लगाना संभव नहीं है कि आप क्या चाहते हैं - आपका छद्म कोड अस्पष्ट है। पाइथन सही जगहों से आने वाले अबाउट वर्गों का ख्याल रखता है, हाउयर। ताकि कोई भी App1.Class_ "निर्माता" दिखाई देगा क्योंकि इसे App1 मॉड्यूल के अंदर परिभाषित किया गया है। – jsbueno
क्षमा करें, मैंने जितना संभव हो उतना स्पष्ट होने की कोशिश की। मैंने पोस्ट में संपादित किया है और उम्मीद है कि यह अधिक समझ में आता है। – Hanpan