一、定义
是一种基于字符串的事件驱动。
可通过字符串的形式,导入模块;也通过字符串的形式,去模块中寻找指定函数,并调用执行;也可通过字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员。
二、内置函数(builtins.py)
1)setattr(object, name, value)
给指定的对象添加属性以及属性值。
object是一个对 象, name是一个字符串,value是name对应的值。
2)hasattr(object, name)
判断该对象是否有指定名字的属性或方法,返回值是bool类型。
hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的。
3)getattr(object, name, default)
获取对象指定名称的属性或方法,返回值是str类型。
object -- 对象。name -- 字符串,对象属性。default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
4)delattr(object, name)
删除对象指定名称的属性或方法值,无返回值。
Object是 一个对象,name是一个字符串且name参数必须是对象属 性名之一。
三、面向类反射
【创建一个类,包含类属性,init方法,类方法,静态方法,一般方法。然后使用该类进行Python反射机制的练习】
1、类属性-可使用hasattr、setattr、getattr、delattr
执行结果:
2、类方法-可使用hasattr、getattr、delattr
执行结果:
3、静态方法-可使用hasattr、getattr、delattr
执行结果:
四、面向对象反射
1、对象属性-可使用getattr、hasattr、setattr、delattr
执行结果:
2、对象方法-可使用hasattr、getattr
执行结果:
五、面向模块反射
导入需要使用的模块后可往该模块下添加属性值及使用该模块下已有的属性的值和方法(或函数)
通过【__import__('gao')】可将gao.py导入到其他模块下