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))

 

posted @ 2018-10-13 15:08  澄心元素  阅读(180)  评论(0编辑  收藏  举报