1.什么是反射
解释型的语言,在程序被加载到内存运行的时候,可以通过反射的方式获取对象的类型、属性等信息。
Python 的反射机制比较简单,共4个关键字:getattr, setattr, hasattr, delattr。
2.具有反射能力的内置函数
1)getattr
# 定义一个class class Student: def showName(self, name): print(name) # 实例化对象 stu = Student() # 语法:getattr(boject, name [,default]) # object 表示对象 # name 表示要对象的属性 # default 可选,作为默认函数返回。如果没找到属性,并且不提供此参数,将触发AttibuteError # 如果stu 存在showName 这个属性,就赋值给fun1, 否则将lambda 匿名函数赋值给fun1 fun1 = getattr(stu, ‘showName‘, lambda x: print(x)) fun1(‘Tom‘)
2)setattr
# 为对象覆盖或者添加showAge 属性 setattr(stu, ‘showAge‘, lambda x: print(x)) stu.showAge(15)
3)hasattr
# hasattr 返回bool 值 if not hasattr(stu, ‘showAge‘): setattr(stu, ‘showAge‘, lambda x: print(x)) stu.showAge(16)
4)delattr
#用于删除对象的属性,作用和setattr 相反,要删除的属性必须存在,否则触发AttributError delattr(a, ‘name‘)
参考:
http://www.9xkd.com/user/plan-view.html?id=2298271364
原文:https://www.cnblogs.com/mojo/p/10654294.html