python反射及应用
Python反射
什么是反射?
假设我们不是第一版开发人员,我们是第二次接受该代码的人.
那么我们就不知道之前第一个人写的类或者对象,或者模块中,有没有该属性,方法;
那么我们需要怎么做呢?
我们可以通过反射,反过来通过一个同名的字符串去判断该成员属性,或者成员方法是否存在于对象或者模块中;
反射本质
核心本质其实就是利用字符串的形式去对象(类/方法/模块)中操作(查找/获取/删除/添加)成员(属性/方法),一种基于字符串的事件驱动!
比如导入模块、调用函数等等,这些都是python的反射机制,是一种编程方法、设计模式的体现,凝聚了高内聚低耦合的编程思想,不能简单的用执行字符串来代替。
class A:
COOKIE = None
a = new A()
setattr(A,'COOKIE','12345') #setattr 设置属性值 print(getattr(A, 'COOKIE')) # getattr 获取属性值 print(delattr(a, 'COOKIE')) # delattr 删除属性 print(hasattr(a, 'COOKIE')) # hasattr 判断是否有这个属性