我发现this,但那不是我想要做的。导入目录中的所有类?
我想导入目录中所有文件中的所有类。基本上,我要取代这个:
from A import *
from B import *
from C import *
的东西动态的,所以我没有让我的__init__.py
每次编辑我添加其他文件。
的glob
解决方案似乎是
import A
import B
import C
相当于这是不一样的。
我发现this,但那不是我想要做的。导入目录中的所有类?
我想导入目录中所有文件中的所有类。基本上,我要取代这个:
from A import *
from B import *
from C import *
的东西动态的,所以我没有让我的__init__.py
每次编辑我添加其他文件。
的glob
解决方案似乎是
import A
import B
import C
相当于这是不一样的。
你可以这样做,但要记住isinstance(cls, type)
只适用于新式课程。
import os, sys
path = os.path.dirname(os.path.abspath(__file__))
for py in [f[:-3] for f in os.listdir(path) if f.endswith('.py') and f != '__init__.py']:
mod = __import__('.'.join([__name__, py]), fromlist=[py])
classes = [getattr(mod, x) for x in dir(mod) if isinstance(getattr(mod, x), type)]
for cls in classes:
setattr(sys.modules[__name__], cls.__name__, cls)
你想用这个做什么? – 2011-06-05 22:56:57
这个答案有什么问题:http://stackoverflow.com/questions/1057431/loading-all-modules-in-a-folder-in-python/1057534#1057534? – viraptor 2011-06-05 22:58:10
@Ignacio:最后一句话。我有大约15个型号,并且所有这些型号都需要一直导入。当这可以通过编程方式完成时,我不得不继续更新'__init __。py'。 – mpen 2011-06-05 23:08:32