反射就是以字符串的方式倒入模块,以字符串的方式查找、获取模块。
目录结构:
test1.py
def f1(): return "f1" def f2(): return "f2" def f3(): return "f3" def f4(): return "f4"
在test2中需要引用的话,可以用如下方式:
import sys class_name = "myreflect.test1" aa = __import__(class_name) print aa print aa.test1.f1()
或者
import sys class_name = "myreflect.test1" aa = __import__(class_name,fromlist = True) print aa.f1()
fromlist不设置默认为False,只会导入第一层。
获取模块如下:
import sys import_str="myreflect.test1" aa = __import__(import_str, fromlist=True) bb = sys.modules["myreflect.test1"] print bb.f2()