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

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

  python的反射机制能够让我们利用字符串去动态的驱动不同的事件,例如导入模块,调用函数等,涉及到的函数有hasattr,getattr,setattr,delattr

  • hasattr:检查模块或者对象中是否有某个成员
  • getattr:获取成员,即将字符串输入的数据装换成对应的成员
  • setattr:设置成员
  • delattr:删除成员  
1 modName=input("请输入模块名:") 2 #__import__:根据字符串输入的模块名导入相对应得模块,如果有嵌套的模块,需要加fromlist=True 3 name=__import__('se.'+modName,fromlist=True) 4  5 print(modName) 6  7 funcName=input("请输入函数名:") 8  9 #检查模块中是否相对应得函数10 exis=hasattr(name,funcName)11 12 if exis:13     #获得函数14     fun=getattr(name,funcName)15     #执行函数16     fun()17     #获得变量18     value=getattr(name,"PYTHON")19     print(value)20 else:21     print("not find")22 23 #设置24 setattr(name,"NAME","LINUX")25 print(hasattr(name,"NAME"))26 #删除27 delattr(name,"PYTHON")28 print(hasattr(name,"PYTHON"))
反射
1 modName=input("请输入模块名:") 2 #__import__:根据字符串输入的模块名导入相对应得模块,如果有嵌套的模块,需要加fromlist=True 3 name=__import__('se.'+modName,fromlist=True) 4  5 className=input("请输入类名:") 6 #将模块中的类导入 7 cls=getattr(name,className) 8 #创建该类的一个实例 9 clsObj=cls()10 #添加该对象的一个字段11 clsObj.PYTHON="sdfsfdsf"12 funcName=input("请输入函数名:")13 14 #检查类中是否相对应得函数15 exis=hasattr(clsObj,funcName)16 17 if exis:18     #获得该对象的函数19     fun=getattr(clsObj,funcName)20     #执行该对象的函数21     fun()22     #获得该对象的变量23     value=getattr(clsObj,"PYTHON")24     print(value)25 else:26     print("not find")27 28 #设置29 setattr(clsObj,"NAME","LINUX")30 print(hasattr(clsObj,"NAME"))31 #删除该对象相对应的变量,如果该变量是属于类的,那么就会出错32 delattr(clsObj,"PYTHON")33 print(hasattr(clsObj,"PYTHON"))
反射二

 

转载于:https://www.cnblogs.com/chaguang/p/8537402.html

你可能感兴趣的文章
AWS CLI使用s3
查看>>
在jfinal中使用druid,并配置查看权限
查看>>
视频+书签 Powerpiont2010可以这样玩
查看>>
如何限制GNS3中CPU的使用率(ASA)
查看>>
首都机场以后也能刷脸坐飞机了
查看>>
PyQt的Layout的比例化分块。
查看>>
python os模块
查看>>
随机生成验证码
查看>>
用Windows画图改变图片大小(附Linux企鹅头像完全版)。
查看>>
NOSQL系列-Redis精简版安装与Ruby测试
查看>>
追MM 之适配器模式实现
查看>>
一种测试方向的探讨-基于模型测试调研引发的思考 - 2
查看>>
Windows 7可以拯救微软Netbook市场
查看>>
彻底清除 mplay.com与mplay.exe病毒
查看>>
向右键添加新建脚本菜单
查看>>
Office 2010带来的协同工作体验
查看>>
MySQL 常见错误提示
查看>>
Dynamips ADSL实验之一pppoeoa(工大瑞普修正版)
查看>>
SQL Server 2012 Always on Availability Groups安装Step by step 1
查看>>
磁盘及文件操作命令
查看>>