一. 反射
什么是反射
反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。
反射就是用字符串数据类型的变量名去访问变量.
反射中适用于类和对象的方法:
getattr
setattr
hasattr
delattr
反射情景:
类名反射 : 静态属性 类属性 静态方法
对象反射: 对象属性 对象方法
模块: 模块中的方法
自己的模块中
反射的参数:
getattr : (命名空间 , ' 变量名 ')
setattr : (命名空间 , ' 变量名 ' , 新值)
hasattr : (命名空间 , ' 变量名 ')
delattr : (命名空间 , ' 变量名 ')
classFoo:
f= '类的静态变量'
def __init__(self,name,age):
self.name=name
self.age=agedefsay_hi(self):print('hi,%s'%self.name)
obj=Foo('egon',73)print(hasattr(obj,'name')) #检测是否含有某属性
print(hasattr(obj,'say_hi')) #检测是否含有某属性
n=getattr(obj,'name