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')
本文介绍了一种在Python中自定义导入模块的方法,解决了__import__方法的一些限制,如不能直接导入子包下的模块及模块下的类等问题。通过定义importAny函数,实现了灵活的模块及类的导入。

被折叠的 条评论
为什么被折叠?



