5
我有以下文件夾結構:的Python - 動態類導入
- 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
我試過用imp和importlib做實驗,但似乎沒有處理這種導入。無論如何,我能夠實現這一目標嗎?
對不起 - 不可能找出你想要的 - 你的僞代碼不清楚。 Python確實會照顧來自正確位置的相關類,不管怎樣。因此任何App1.Class_都將看到「Producer」,因爲它是在App1模塊中定義的。 – jsbueno
對不起,我試圖儘可能清楚。我編輯了這篇文章,希望它更有意義。 – Hanpan