如果我定義了一個模塊模塊與對應的目錄module/
,我可以動態加載子模塊的類,如a.py
或b.py
?如何從給定目錄動態加載python類?
--module
----a.py
----b.py
這是否需要知道類名來搜索?我可以設置一個基本類,以某種方式加載這些孩子?
基本用例是允許用戶編寫自己的程序將加載的一些代碼。就像rails允許您在特定目錄中編寫自己的控制器,視圖和模型一樣。
加載模塊的代碼動態到目前爲止我是
def load(folder):
files = {}
for filename in os.listdir(folder):
if (filename[0] != '_' and filename[0] != '.'):
files[filename.rstrip('.pyc')] = None
# Append each module to the return list of modules
modules = []
mod = __import__(folder, fromlist=files.keys())
for key in files.keys():
modules.append(getattr(mod, key))
return modules
我希望能修改它返回類對象。
如果您檢查其他[SE問題](http://stackoverflow.com/questions/193161/what-is-the-best-project-structure-for-a-python-application)關於python模塊數據結構,第三個答案給出了一個很好的簡短答案。我猜你可能會做一些事情:'從模塊導入動態'。 – Zenon