反射到底是个啥?
反射这个词从逻辑上来说和倒影是差不多的,从一个3D的立体变成一个二维的平面影像,其实但从这个上面就已经可以理解在编程中反射是干啥用的了。
用官方的话说"反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力"。
其实本质上简单说,就是把一个对象类型拆解。可以使用字符串的形式去访问和修改对象。
为什么要使用反射?他帮我们解决了什么问题?
首先有反射那么就有"正射"。
正常情况下是导入模块,找到想要的类,再创建实例对象,接着再调用方法,这个方法太麻烦了,一个程序不停的运行,所需要的功能不断增多,不可能手动去一一导入,而且还需要程序去进行判断某个模块功能是否变动,这种情况必须只能是使用反射了。
这也是为什么很多框架是必须使用反射的原因了,因为反射帮助他们提供了一下几点能力。
1.能够用字符串的形式去操作对象,提高了程序的灵活性和扩展性。
2.降低了耦合性,提升了代码的健壮性和自适应能力。
3.这种形式可以应对任何类的对象。
那么反射怎么使用呢?
Python/ target=_blank class=infotextkey>Python的内置函数提供了强大的反射机制,
__import__()加载模块
dir()列表形式返回属性和方法
hasattr()检测是否含有某属性
getattr()获取属性
setattr()设置属性
delattr()删除属性
首先创建一个文件say.py并再其中声明一个类say,创建一个sayLove方法。
接着再另一个文件中使用__import__以字符串形式导入模块,读取其中的say类。