反射--day26

反射
"""
反射 其实说的实反省
简单的说 就是 对象要具备一种修正错误的能力

hasattr 是否存在某个属性
getattr 获取某个属性的值
setattr 设置某个属性的值
delattr 删除某个属性

这几方法有一个共同点 都是通过字符串来操作属性
你可以理解为 通过字符串来操作属性 就叫做反省

如果在编写代码期间 就能明确知道我要访问的属性 没有必要使用反射
如果在编写代码期间 无法明确知道我要访问的属性 这时就应该使用反射

"""
class Student:
def __init__(self,name,sex,age):
self.name = name
self.age = age
self.sex = sex

def study(self):
print("学生正在学习...")


stu = Student("矮根","woman",38)

# 当你获取到一个对象 但是并不清楚搞对象的内部细节时 就需要使用反射了
def test(obj):
if hasattr(obj,"name")#判断是否存在某个属性
print(getattr(obj,"name","没有name属性"))#如果有就获取这个属性的值
test(stu)

setattr(stu,"school","bejing")#设置"school这个属性为beijin"
delattr(stu,"school")#删除"school"这个属性

posted @ 2018-12-19 17:38  WenChen-0o0  阅读(87)  评论(0编辑  收藏  举报