zoukankan      html  css  js  c++  java
  • 反射getattr hasattr

    #反射 : 是用字符串类型的名字 去操作 变量
    # 反射对象中的属性和方法   # hasattr getattr setattr delattr
    class Tech(): dic = {"学生信息":'show_student',"老师信息":'show_teacher'} def show_teacher(self): print("显示老师") def show_student(self): print("显示学生") @classmethod def func(self): print("OKKKK") print(Tech.dic) #{'学生信息': 'show_student', '老师信息': 'show_teacher'} print("======") jack = Tech() print(jack.dic) #{'学生信息': 'show_student', '老师信息': 'show_teacher'} for k in jack.dic: print(k) print("++++++") ''' getattr()获取对象object的属性或者方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选。 需要注意的是,如果是返回的对象的方法,返回的是方法的内存地址,如果需要运行这个方法, 可以在后面添加一对括号。 ''' # getattr() 函数用于返回一个对象属性值 ret1 = getattr(Tech,"dic") #得到的类.属性名 类也是一个对象 #获取dic属性,存在就打印出来。 print(ret1) #{'学生信息': 'show_student', '老师信息': 'show_teacher'} ret2 = getattr(Tech,"func") #得到的类.方法名, #获取func方法,存在就打印出方法的内存地址 print(ret2) #<bound method Tech.func of <class '__main__.Tech'>> print("--------------------") #getattr(Tech,"func")() #获取func方法,后面加括号可以将这个方法运行。 ret2() #OKKKK #获取func方法,后面加括号可以将这个方法运行。 ret3 = getattr(jack,"show_teacher") #对象,方法名 ret3() #显示老师 ret4 = getattr("aaa", "age","18") #若属性不存在,返回一个默认值。 print(ret4) #18 if getattr(Tech,"dic"): print(getattr(Tech,"dic")) key = input("输入key的名称:") print(Tech.dic[key])
    #检测是否有某属性或方法
    if hasattr(jack,Tech.dic[key]): func = getattr(jack,Tech.dic[key]) #得到字典value的值, func() #获取func方法,后面加括号可以将这个方法运行。 # hasattr(object, name) # 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False。 # 需要注意的是name要用括号括起来 ret5 = hasattr(jack, "name") #判断对象有name属性 print(ret5) #False ret5 = hasattr(jack, "func") #判断对象有func属性 print(ret5) #True

    #设置属性
    setattr(obj,'sb',True)
    setattr(obj,'show_name',lambda self:self.name+'sb')
    print(obj.__dict__)
    print(obj.show_name(obj))
    
    #删除属性
    delattr(obj,'age')
    delattr(obj,'show_name')
    delattr(obj,'show_name111')#不存在,则报错
    
    print(obj.__dict__)
     
  • 相关阅读:
    LR12解决不能打开webTours服务问题
    python中join()方法介绍
    python中的sort方法和sorted方法
    如何发送最新的测试报告到目标邮箱?
    python2.7发送邮件失败之——邮箱安全问题
    python2.7发送邮件失败之——代码问题
    python2.7发送邮件失败之——SMTPAuthenticationError问题
    使用HTMLTestRunner在目标目录下并未生成HTML文件解决办法
    python标准日志模块logging及日志系统设计
    性能测试需求分析
  • 原文地址:https://www.cnblogs.com/chvv/p/10100975.html
Copyright © 2011-2022 走看看