反射的应用情景

对象.属性

可以获得值

 

如果,我的属性名是一个字符串

无法通过

对象.字符串属性名

取值

 

解决办法:

通过反射来实现

 

反射的三个函数分别是

hasattr

getattr

setattr

 

 

 

 

 

getattr

属性值 = getattr(obj对象名,str属性名)

获取对象的属性值

str_name = getattr(t,"name")  # t.name

 

 

 

 

setattr

setattr(obj对象名,str属性名,str属性值)

给一个对象添加属性和值

setattr(t,"age",18)  # t.age = 18

 

 

 

 

 

hasattr

hasattr(obj对象名,str属性名)

判断一个对象是否拥有某某属性

hasattr(t,"name")

返回值是布尔类型,有属性就是True,无属性就是False

 

 

 

 

其它

反射不仅可操作对象的属性

也可操作对象的方法