反射
1.什么是反射?以及应⽤场景?(2分)
通过字符串的形式操作对象相关的属性。python中的⼀切事物都是对象(都可以使⽤反射)
# python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)
# 从实例的角度去研究反射 可以使用
# getattr(obj,'func')()
# 从类的角度研究反射 可以使用
# getattr(A,'func')(obj)
# 从当前脚本研究反射 可以使用
# hasattr(this_module, 's1')
# 在其他模块研究反射 可以使用
# getattr(obj,'test')()
# 实列
class A():
def __init__(self,name):
self.name=name
obj=A('SQ')
print(hasattr(obj,'name'))#True
print(getattr(obj,'name',666))#SQ 加第3个参数 不会报错
setattr(obj,'hobby','玩')#增加属性 可以覆盖 左边属性 右边属性值
print(getattr(obj,'hobby'))
delattr(obj,'name')#删除属性
print(getattr(obj,'name','么有了呀'))
# 总结
# print(hasattr(obj,'name'))#查询 返bool 确认 有没有这个属性
# print(getattr(obj,'name','没有'))#查询 返回 对应属性值 加第3个参数 不会报错
# setattr(obj,'aa','aa')#增加属性第2个参数是键第3个是值 可以覆盖
# delattr(obj,'name')#删除属性