文章介绍:
1.什么是反射?
2.反射怎么用?
3.什么情况下使用反射?
一.什么是反射?
1.反射定义:
反射是指程序可以访问。检测和修改它本身状态或行为的一种能力(自省)
2.反射的作用:
动态获得类的信息.
让对象告诉我们相关信息(对象拥有属性,方法,已经对象所属的类等)
二.反射怎么用?
1.通过字符串的形式操作对象的相关属性
四个可以自省的函数:
hasattr(对象名,属性名)
getattr(对象名,属性名)
setattr(对象名,属性名,值)
delattr(对象名,属性名)
class Test:
name = "小黄人Asa"
def __init__(self, age):
self.age = age
def sleep(self):
print("你都%d,还在睡懒觉" % self.age)
"""hasattr(对象名,属性名) 检查是否含有某个属性,如果有,返回True,否则返回Flase"""
test=Test(28)
print(hasattr(test, "name")) # True
print(hasattr(Test, "sleep")) # True
print(hasattr(Test, "eat")) # False
"""getattr(对象名,属性名) 获取某个属性"""
test2=Test(30)
print(getattr(test2,"name"))#小黄人Asa
print(getattr(test2,"heigth")) #如果找不到属性,则会报错: 'Test' object has no attribute '123'
"""setattr(对象名,属性名,值) 设置某个属性"""
test3=Test(35)
setattr(test3,"weight",60)
print(test3.__dict__)#{'age': 35, 'weight': 60}
"""delattr(对象名,属性名) 删除某个属性"""
test4=Test(40)
delattr(test4,"age")
print(test4.__dict__)