python 反射
反射就是一个别名。
实际作用:到一个库或者类中去找一个可以引用的东西,类名,函数名,实例,变量都可以
关键点:两个函数hasattr()返回True(说明存在)否则返回False,getattr()返回一个地址否则报错
两个参数,第一个写要去哪儿找,第二个写上面一堆东西的名字,字符串类型。
反射本文件: hasattr(sys.modules[__name__],'A')
自动反射其他库中对象: 使用__import__()方法
要在paketage中反射,xiaoyun.py中的某个类
那么先在自己的syspath中加入p1文件夹的路径,然后
mol=__import__('p_1_2.p_1_2_1.xiayun',formlist=True)
c=getattr(mol,'Xiaoyun')
c就是Xiaoyun这个类的地址了,可以任意使用.
要注意的是:如果__import__(),不加第二个参数,就只会返回第一个参数的顶级类,而不是具体指向的类