博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python反射
阅读量:4992 次
发布时间:2019-06-12

本文共 827 字,大约阅读时间需要 2 分钟。

36、python的反射:
          实例:伪造一个web框架的路由系统
          1、利用字符串的形式取对象(模块)中操作(寻找,删除,检查,设置)成员,getattr()和hasattr()的使用:
               commons.py
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
def login():
    print('登陆页面')
def logout():
    print('退出页面')
def home():
    print('主页面')
index.py
import commons
def run():
    inp = input('请输入要访问的url:')
    if hasattr(commons,inp):
        func = getattr(commons,inp)
        func()
    else:
        print('404')
if __name__ == '__main__':
    run()
2、delatttr()和setattr()只是删除和设置加载到内存中的模块,而实际没有改变原模块中的内容.
3、导入模块的反射:
   #1:__import__(str)的应用:obj = __import__(str) 导入的时候:obj.attribute
   #2:__import__('xx.oo.yy',fromlist=True)表示导入xx目录下的oo目录下的yy模块。
def run():
    inp = input('请输入要访问的url:')
    m,f = inp.split('/')
    obj = __import__(m)
    if hasattr(obj,f):
        func = getattr(obj,f)
        func()
    else:
        print('404')
if __name__ == '__main__':
    run()

转载于:https://www.cnblogs.com/cfj271636063/p/5806791.html

你可能感兴趣的文章
inline必须在定义、实现都标记
查看>>
从单链表到循环链表
查看>>
百度招聘无处不在!
查看>>
丢失控制文件恢复实验记录--3(当前的控制文件损坏,归档日志文件损坏且备份的控制文件是旧的情况恢复数据库)...
查看>>
Ganglia监控MySQL
查看>>
反射和动态导入模块
查看>>
信息社会
查看>>
Mysql存储引擎概念特点介绍及不同业务场景选用依据
查看>>
关于Java类Calendar做统计时 获取日期的一些常见操作
查看>>
从程序员转向淘宝店主的探索
查看>>
openstack 中国联盟公开课參会总结
查看>>
约瑟夫环问题详解 (c++)
查看>>
Ubuntu 配置VNC以及使用VNC连接时,无法显示系统菜单栏,解决方法
查看>>
BZOJ.3990.[SDOI2015]排序(DFS)
查看>>
hdu 1358
查看>>
“-fembed-bitcode is not supported on versions of iOS prior to 6.0” 错误
查看>>
[转]jquery mobile中redirect重定向问题
查看>>
[django]表格的添加与删除实例(可以借鉴参考)
查看>>
Mockito一个采用Java编写用于单元测试的Mocking框架
查看>>
把elipse非maven的Struts2+Spring+Ibatis项目导入Idea中
查看>>