zoukankan      html  css  js  c++  java
  • python之反射

    1.定义:以字符串的形式去对象(模块)中操作其成员(方法  变量 等)

    inp=input('请输入模块名:')
    #以字符串的形式导入模块
    DD=__import__(inp,fromlist=True)
    re=DD.f1()#f1()是导入的模块的函数
    print(re)
    
    s=input('输入函数名称:')
    #以字符串的形式去模块中找函数
    target_func=getattr(DD,s)
    r=target_func()#执行函数
    print(r)
    
    #以字符串的形式去某个模块中判断东西是否存在
    has_func=hasattr(DD,s)
    print(has_func)#存在的话返回结果为True
    
    #以字符串的形式去某个模块中设置东西
    set_func=setattr(DD,'a',9)
    print(DD.a)#得到的结果为9
    
    #以字符串的形式去某个模块中删除东西
    del_func=delattr(DD,'a')
    print(DD.a)#运行报错  AttributeError: 'module' object has no attribute 'a'

    2.基于反射模拟Web框架路由系统(只能用一个模块)

    from lib import account #导入模块
    url=input('请输入url:').split('/')[-1]
    
    if hasattr(account,url):
        target_func=getattr(account,url)
        re=target_func()
        print(re)
    else:
        print('404')

    3.基于反射模拟Web框架路由系统(任意模块

    #规定用户输入格式  模块名/函数名
    url=input("请输入url:")
    target_model,target_func=url.split('/')
    m='lib.'+target_model#导入的模块在lib文件中
    #导入模块
    model=__import__(m,fromlist=True)
    #判断函数是否在导入的模块中
    if hasattr(model,target_func):
        re=getattr(model,target_func)
        r=re()
        print(r)
    else:
        print('404')
  • 相关阅读:
    Text box to accept only number
    两个经典的Oracle触发器示例
    ELK部署
    Win10+CentOS7双系统引导修复
    自定义多选框(checkbox)和单选框(radio)css样式
    js事件
    js数组与字符串处理 slice、splice、substring、substr、push、pop、shift、reverse、sort、join、split
    css入门基础
    cocos2dx基础篇(7) 触碰事件
    cocos2dx基础篇(6) 定时器schedule/update
  • 原文地址:https://www.cnblogs.com/wangbinbin/p/7237131.html
Copyright © 2011-2022 走看看