面向对象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

    面向对象7--反射

    getattr

    面向对象7--反射

    setattr

    面向对象7--反射

    delattr

    面向对象7--反射

    其他玩法:1、新增属性或函数;2、验证其他模块是否包含某属性

    面向对象7--反射

    面向对象7--反射


2>反射的应用

    1、实现可拔插机制----可以事先定义好接口,接口只有在被完成后才会真正执行,这实现了即插即用,即你可以事先把主要的逻辑写好(只定义接口),然后后期再去实现接口的功能。例子如下

    面向对象7--反射

    2、设想一个场景,写个程序,让程序接受用户的输入,判断并做对应的操作

    面向对象7--反射

    稍加改写,用户输入中包含属性字符和参数,如下

    面向对象7--反射