面向对象7--反射
1>什么是反射
通过字符串的形式映射对象的属性。python中一切皆对象(都可以使用反射)
实现反射相关的函数
hasattr(object,name):判断obj中是否有name属性,注意传值时为str类型
getattr(object, name, default=None):获取obj的那么属性(返回属性),有default参数时若没有该属性则
返回None(当然,你也可以写别的,反正就返回default参数的值),没有default参数时,没有该属性则报错。
setattr(x, y, v):设置x的y属性,值为v
delattr(x, y):删除x的y属性
函数举例 hasattr
getattr
setattr
delattr
其他玩法:1、新增属性或函数;2、验证其他模块是否包含某属性
2>反射的应用
1、实现可拔插机制----可以事先定义好接口,接口只有在被完成后才会真正执行,这实现了即插即用,即你可以事先把主要的逻辑写好(只定义接口),然后后期再去实现接口的功能。例子如下
2、设想一个场景,写个程序,让程序接受用户的输入,判断并做对应的操作
稍加改写,用户输入中包含属性字符和参数,如下