Python——反射
反射的定义:使用字符串类型的名字 去操作变量
hasattr 函数 与getatter配合使用,用来判断变量是否存在
if hasatter(my,'a'):#如果为真执行 getatter(my,'a')
setattr 函数 设置修改变量
delatter 函数 删除一个变量
class A: pass a = A() setattr(a,'name','nezha') setattr(A,'name','alex') print(A.name) print(a.name) #给类加个变量 delattr(A,'name') print(a.name)
getatter 函数 反射对象的属性 、反射对象的方法 反射类的属性 反射类的方法
class Teacher: dic = {'查看学生信息':'show_student','查看讲师信息':'show_teacher'} def show_student(self): print('show_student') def show_teacher(self): print('show_teacher') @classmethod def func(cls): print('hahaha') getatter(a,变量名) #反射对象的属性 ret = getatter(Teacher,'dic') #反射对象的方法 #结果 {'查看学生信息':'show_student','查看讲师信息':'show_teacher'} ret2 = getatter(Teacher,'func') ret2() #结果 直接运行了 func函数
# 通过反射
# 对象名 获取对象属性 和 普通方法
# 类名 获取静态属性 和类方法 和 静态方法
内置方法
isinstance(obj,cls) 检查obj是否是类cls的对象
issubclass(sub,super) 检查sub类是不是super的子类
class A:pass class B(A):pass a = A() print(isinstance(a,A)) print(issubclass(B,A))