python基础-第七篇-7.3反射
2024-10-15 22:37:44
定义
反射是根据字符串的形式去对操作其成员
了解反射前,我先看看内置方法__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('')
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('')
欢迎大家对我的博客内容提出质疑和提问!谢谢
笔者:拍省先生
最新文章
- java抽象、接口 和final
- UI中一些不常用的控件UIActivityIndicatorView、UIProgressView、UISegmentedControl、UIStepper、UISwitch、UITextView、UIAlertController
- Tomcat 内存溢出对应解决方式
- ul、li模仿ios的TableView实现城市选择
- 上传源码到github
- Linux find/grep命令
- C# winForm程序开机启动和托盘显示 (转http://blog.csdn.net/xinyue3054/article/details/6599508)
- D3.js 布局
- The OAuth 2.0 Authorization Framework-摘自https://tools.ietf.org/html/rfc6749
- Asp.net中实现同一用户名同时登陆,注销先前用户(转)
- Nginx+uwsgi+supervisor+Ubuntu+flask
- Jmeter中正则表达式提取器使用详解
- JAVA代码规范笔记(上)
- BZOJ_3585_mex &;&; BZOJ_3339_Rmq Problem_主席树
- python之控制流
- 与我们息息相关的internet服务(2)---WWW服务
- 解决“错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容 ”问题
- SSH 项目整合
- idea不能跟随输入法问题
- JAVA servlet 上传文件(commons-fileupload, commons-io)
热门文章
- 【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装
- Launcher代码大全
- deb包的2种安装安装方法
- php的json校验json-schema
- 10款CSS3按钮 - 再也不用为按钮设计而发愁了
- 面向对象方法的重载(overloading)和覆盖(overriding)
- 【BZOJ】1079: [SCOI2008]着色方案(dp+特殊的技巧)
- jquery ajax生成Select
- mysql根据查询结果,创建表
- Appium使用Python运行appium测试的实例