python中的import方法与newInstance

python中的__import__方法,在导入位于子包下的模块时,必须有fromlist参数,否则返回的不正确。
__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)