定义

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

  了解反射前,我先看看内置方法__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('')

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

                                                                             笔者:拍省先生 

最新文章

  1. java抽象、接口 和final
  2. UI中一些不常用的控件UIActivityIndicatorView、UIProgressView、UISegmentedControl、UIStepper、UISwitch、UITextView、UIAlertController
  3. Tomcat 内存溢出对应解决方式
  4. ul、li模仿ios的TableView实现城市选择
  5. 上传源码到github
  6. Linux find/grep命令
  7. C# winForm程序开机启动和托盘显示 (转http://blog.csdn.net/xinyue3054/article/details/6599508)
  8. D3.js 布局
  9. The OAuth 2.0 Authorization Framework-摘自https://tools.ietf.org/html/rfc6749
  10. Asp.net中实现同一用户名同时登陆,注销先前用户(转)
  11. Nginx+uwsgi+supervisor+Ubuntu+flask
  12. Jmeter中正则表达式提取器使用详解
  13. JAVA代码规范笔记(上)
  14. BZOJ_3585_mex && BZOJ_3339_Rmq Problem_主席树
  15. python之控制流
  16. 与我们息息相关的internet服务(2)---WWW服务
  17. 解决“错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容 ”问题
  18. SSH 项目整合
  19. idea不能跟随输入法问题
  20. JAVA servlet 上传文件(commons-fileupload, commons-io)

热门文章

  1. 【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装
  2. Launcher代码大全
  3. deb包的2种安装安装方法
  4. php的json校验json-schema
  5. 10款CSS3按钮 - 再也不用为按钮设计而发愁了
  6. 面向对象方法的重载(overloading)和覆盖(overriding)
  7. 【BZOJ】1079: [SCOI2008]着色方案(dp+特殊的技巧)
  8. jquery ajax生成Select
  9. mysql根据查询结果,创建表
  10. Appium使用Python运行appium测试的实例