python中的__import__方法,在导入位于子包下的模块时,必须有fromlist参数,否则返回的不正确。
__import__也不能导入module下的class,可以自己写一个函数来解决这个问题
__import__也不能导入module下的class,可以自己写一个函数来解决这个问题
def importAny(name):
try:
return __import__(name,fromlist=[''])
except:
try:
i = name.rfind('.')
mod = __import__(name[:i],fromlist=[''])
return getattr(mod,name[i+1:])
except:
raise RuntimeError('No module of: %s found'%(name))
xxx = importAny('my.xxx')
cls = importAny('my.xxx.SomeClass')
#相当于 Class.forName('my.xxx.SomeClass')
obj = cls('xxxx')
#相当于newInstance(‘xxx')