zoukankan      html  css  js  c++  java
  • python基础-第七篇-7.3反射

    定义

      反射是根据字符串的形式去对操作其成员

      了解反射前,我先看看内置方法__import__,还记得这个内置方法吗?

    • __import__  用于以字符串的形式导入模块
    inp = input('请输入你要导入的模块:')
    mokuai = __import__(inp)  #import xml as mokuai
    print(mokuai.__doc__)
    • getattr  用于以字符串的形式去某个模块寻找函数
    import re
    str_func = input('请输入你要执行re下的方法:')
    tar_func = getattr(re,str_func)
    print(tar_func) #打印找到函数的内存地址

     

    反射成员

    • getattr   用于以字符串的形式去某个模块寻找函数

    import re
    str_func = input('请输入你要执行re下的方法:')
    tar_func = getattr(re,str_func,None)  #找到了就返回函数,没有找到就返回None,不设置None,没找到就报错
    print(tar_func) #打印找到函数的内存地址
    • hasattr  根据字符串的形式去某个模块中查看是否存在某东西

    import re
    ret1 = hasattr(re,'match')
    print(ret1)
    ret2 = hasattr(re,'fjfijajfojg')
    print(ret2)
    • setattr 设置

    r = hasattr(commons,'age')
    print(r)  #False
    setattr(commons,'age',lambda a:a + 1)
    r = getattr(commons,'age')  #没报错
    ret = r(1)
    print(ret)
    • delattr 删除

    实例:web框架的路由系统

    from lib import account
    url = input('请输入url:')
    inp = url.split('/')[-1]
    if hasattr(account,inp):
        func = getattr(account,inp)
        func()
    else:
        print('404')
    url = input('请输入url:')
    target_module,target_func = url.split('/')
    m = __import__('lib.'+target_module,fromlist=True)
    if hasattr(m,target_func):
        tar_func = getattr(m,target_func)
        r = tar_func()
        print(r)
    else:
        print('404')

                                                    欢迎大家对我的博客内容提出质疑和提问!谢谢

                                                                                 笔者:拍省先生 

  • 相关阅读:
    【笔记】:sort排序大法
    【模块】:torndb
    【模块】:CSV文件 数据可视化
    【模块】:Pygal 绘制直方图
    【模块】:matplotlib 绘制折线图
    【Django】:重构Admin
    【数据结构】:基础
    【数据结构】:排序练习
    【数据结构】:算法(二)
    【数据结构】:算法(一)
  • 原文地址:https://www.cnblogs.com/xinsiwei18/p/5645244.html
Copyright © 2011-2022 走看看