zoukankan      html  css  js  c++  java
  • Python_019(六星级别之反射方法)

    1.反射

     1)神赐给你的内置函数 :

    a: getattr(命名空间,'函数名') == 命名空间.属性名; 这里的命名空间指的是对象或者类;

    b: getattr四个应用场景: 

      1)类名.名字 <==> getattr(类名,'名字')
      2)对象名.名字 <==> getattr(对象名,'名字')
      3)模块名.名字 <==> getattr(模块名,'名字')
      4)自己文件名.名字 <==> getattr(自己文件名,'名字')

    c:getattr的天命圈

    **getattr(命名空间,'函数名',默认值参数)这个默认值参数就很强大,getattr会先找指定成员,如果存在

    则返回成员引用,否则返回默认值参数;但是你如果不传默认值参数,如果找不到会报错(它与hasttr异常处理的区别见下边解释)

    所以总结来说,getattr就是把你用小数点调用的方式转换为getattr(命名空间,‘静态变量名/动态变量名)

    2)hasattr():

    a:功能指定对象中是否含有指定成员,有则返回True,否则返回False;

    b:格式:hasattr(指定对象空间,变量名)

    c:异常处理时与hasattr的区别:

    imp = input('>>>:')
    imp_module = __import__(imp)
    while 1:
        fun_name = input('>>>:')                    
        func = getattr(imp_module,fun_name,True)    #如果找不到,则返回默认参数
        if func == True:                            #对找不到的情况处理
            print('重新输入!')
            continue
        else:
            a = func()
            print(a)
    
    
    imp = input('>>>:')
    imp_module = __import__(imp)
    while 1:
        fun_name = input('>>>:')
        ret = hasattr(imp_module, fun_name)     #查看指定对象里的情况,如果没有返回False
        if ret == True:                            #对找不到的情况处理
            func = getattr(imp_module,fun_name)
            a = func()
            print(len(a))
        else:
            print('重新输入!')
            continue

    第一段程序是利用默认值  第二段是利用hasattr(后者是对指定对象空间处理,比较精准)

    3)setattr():

    a: 功能:给指定对象添加指定成员

    b:格式:setattr(对象空间,要改的变量名,新值)

    4)delattr()

    a:功能删除指定对象中的指定成员

    b:格式delattr(对象空间,变量名)

  • 相关阅读:
    Android使用百度地图定位并显示手机位置后使用前置摄像头“偷拍”
    JS传递参数时对中文进行编码和解码
    点击<a>标签,禁止页面自动跳到顶部的解决办法
    百度地图API用法(传地址)
    asp.net页面按Enter键IE不提交表单
    asp.net同时调用JS和后台的无效的解决
    QQ浏览器不支持JS问题
    html中opacity的使用
    c#中传递参数前加out
    IE下使用jquery ajax失效
  • 原文地址:https://www.cnblogs.com/0627zhou/p/9398521.html
Copyright © 2011-2022 走看看