Python开发【第一篇】Python基础之反射
2024-10-13 02:39:42
反射
反射的作用:反射得作用是提高代码可读行。
__import__导入模块和import导入模块的区别:
__import__导入模块是通过字符串进行导入。 import是常用得导入模块方法。
扩展:
import xxx from xxx import ooo obj = __import__("xxx") obj = __import__("xxx.oo.xxx",fromlist=True)
反射常用到得4个内置函数分别为:getattr、hasattr、setattr、delattr 获取成员、检查成员、设置成员、删除成员。
实例:
最初模块调用是这样得:
# commons.py def login(): print('炫酷的登录页面') def logout(): print('炫酷的退出页面') def home(): print('炫酷的主页面') # index.py import commons def run(): inp = input('请输入要访问的url:') if inp == 'login': commons.login() elif inp == 'logout': commons.logout() elif inp == 'home': commons.home() else: print('404')
用了反射后是这样得:
#commons.py def login(): print('炫酷的登录页面') def logout(): print('炫酷的退出页面') def home(): print('炫酷的主页面') #index.py import commons def run(): inp = input('请输入要访问的url:') # inp字符串类型 inp = "login" # 利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员 # delattr() # setattr() if hasattr(commons, inp): func = getattr(commons,inp) func() else: print('404') if __name__ == '__main__': run()
模块也可以通过字符串进行导入:
def run(): # account/login inp = input('请输入要访问的url:') # inp字符串类型 inp = "login" # 利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员 # delattr() # setattr() m, f = inp.split('/') obj = __import__(m) if hasattr(obj, f): func = getattr(obj,f) func() else: print('404') if __name__ == '__main__': run()
对于反射小节:
1、根据字符串的形式导入模块。 2、根据字符串的形式去对象(某个模块)中操作其成员。
实例:伪造web框架的路由系统
def run(): # account/login inp = input('请输入要访问的url:') # inp字符串类型 inp = "login" # 利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员 # delattr() # setattr() m, f = inp.split('/') obj = __import__("lib." + m,fromlist=True) if hasattr(obj, f): func = getattr(obj, f) func() else: print('404') if __name__ == '__main__': run()
最新文章
- Spring+SpringMvc+Mybatis框架集成搭建教程四(项目部署及测试)
- 【Unity3d游戏开发】unity3D OnTriggerEnter和OnCollisionEnter的一点个人心得(转载)
- 突击战UVa11729Commando War
- Dynamic Programming
- python学习之——计算给出代码中注释、代码、空行的行数
- 使用php模拟post的几种方法
- mybatis使用
- Washing Clothes_01背包
- BestCoder Round #79 (div.2)
- let和const====均参考阮大神的es6入门
- css行级块级区别总结摘录
- 删除IE缓存中指定的文件
- Android UI ActionBar功能-自定义 Action Bar 样式
- sql中在查询语句中加判断,控制输出的内容
- SQLServer2012 分页语句执行分析
- python如何转换word格式、读取word内容、转成html
- dos.orm
- Java 自增原理
- 设计一款相册APP,代替系统自带的相册功能,列举主要功能
- Security Testing Test Scenarios