1、反射

反射的存在解决了eval的安全问题,eval是接收外界输入进行执行,而反射是对已有的东西进行转换或者操作相对安全

反射对象中的反射方法  hasattr getattr setattr delattr

getattr

class A:price = 0.3def fun(self):print('1111')def fun1(self,age):print('111{}'.format(age))@classmethoddef change_price(cls):cls.price = 0.7
a = A()
a.name = 'ebola'
print(getattr(a,'name'))    #对象调用属性
getattr(A,'fun1')(a,'22')   #类调用方法
getattr(a,'fun1')('22')  #对象调用方法
print(getattr(A,'price')) #查看静态属性
getattr(A,'change_price')()  #执行改变的函数  是价格变成了0.7
print(getattr(a,'price'))
print(getattr(A,'price'))
使用场景
变量名 = input('请输入查看的属性')
print(getattr(a,变量名))  #返回的字符串直接执行就可以
# 夫妻档
if hasattr(A,'fun1'):  #先判断有没有这个方法getattr(A,'fun1')()  #执行这个方法
反射模块的方法   模块名.模块名中的函数名字字符串
import sys
sys.path.append(r'C:\Users\zzzzzz\Desktop\python\【Ebola】day - 副本 (27)\y.py')
import y
getattr(y,'fun1')()
a = y.A()   #调用模块的类
a.fun()
C1 = getattr(y,'A')()  #调用模块中的类  再加上括号相当于实例化
print(C1.price)
调用自身模块
name = '小明'
print(getattr(sys.modules[__name__],'name')) #调用自身模块中的变量
a = getattr(sys.modules[__name__],'A')()   #调用自身模块中的类
print(getattr(a,'price'))

setattr  设置修改变量(添加)   deltattr  删除一个变量
class A:pass
a = A()
setattr(A,'name','gaojiantao')  #添加一个静态变量
setattr(a,'name','luliu')  #添加一个动态变量
print(a.name)
delattr(a,'name')   #删除对象a 中的name
print(a.name)     #name被删除去找 就去类中找
print(A.name)


转载于:https://www.cnblogs.com/Ebola-/p/8329465.html

工作记录 反射相关推荐

  1. 2015年1月工作记录和阅读记录

    2019独角兽企业重金招聘Python工程师标准>>> 关于IT.翻过了2014的一年,也走到了大四的中间.成长说不上,但是眼界是慢慢开阔了.这一年的节奏像流水一样缓慢平稳,没有特别 ...

  2. selenium 学习、工作 记录,附常见异常和工具方法

    selenium 学习.工作 记录,附常见异常和工具方法 基础配置 2020.03.31 开发者模式 设置有认证的http代理 让selenium接管人为打开的chrome 2020.07.23(79 ...

  3. 如何通过路由器日志查看路由器是否断网过_路由器本身有一个日志功能,里面存了很多工作记录...

    第一种原因或许是来自路由器内存的问题,路由器本身有一个日志功能,里面存了很多工作记录. 有的路由器本身内存小,用的时间久了日志信息就会占满内存,出现路由器无缘无故卡一下的状况,从而导致网络连接故障,无 ...

  4. 5.20——工作记录

    5.20--工作记录 前言 记录 jsp显示问题 人员详情检索 证件类型 证件号码 变灰 禁用 恢复人员检索信息 总结 前言 记录 jsp显示问题 问题:之前显示成aseid了 问题解决 点详情把人员 ...

  5. 5.26——工作记录

    5.26--工作记录 前言 过程 总结 重点 前言 目标:1.准备查询的基础sql 2.查询页面, 3.点击设备编码按钮的显示 4.图片 过程 deviceStatusPerceptionEventI ...

  6. 5.6-5.8工作记录2—分页模糊查询

    5.6-5.8工作记录2-改造ssh 前言 作战过程 5.7项目上篇--分页模糊查询 jsp ssm PK ssh 准备ssm 对比ssh: 工作bug记录 注意 打怪 查询以及分页 知识点 准备第二 ...

  7. 项目实训工作记录(二)

    项目实训工作记录(二)赵乐乐 201800301115 词向量搜索分析与算法设计 项目实训工作记录(二)赵乐乐 201800301115 1.词向量搜索 2.搜索过程中的问题分析 3.基于效率的算法设 ...

  8. openshift/origin工作记录(9)——openshift结合jenkins实现持续集成

    最近工作为基于jenkins.Openshift实现持续集成. 由于只给了我一周的时间,这里先记录一下V1.0版的实现过程. 集成jenkins 参考<openshift/origin学习记录( ...

  9. 2020.4.23工作记录————Regsvr32加载控件失败:“请确保该二进制存储在指定路径中。。。”

    工作记录----Regsvr32加载控件失败: 之前的OCX控件今天我因为工作需要又重新写了个新的,跟之前不同的是这次的控件链接了第三方的动态库,但是在OCX控件生成完成后我使用管理员身份运行cmd对 ...

最新文章

  1. Python Qt GUI设计:窗口之间数据传递(拓展篇—5)
  2. 在C#中使用代理的方式触发事件 (委托和事件 ) (转)
  3. 碳中和背景下中国水泥行业发展预测与投资价值分析报告2022-2028年版
  4. 为什么let在php中报错,PHPlet在Windows下的安装
  5. 10天学安卓-第九天
  6. 如何在其他类中使用application.properties的属性
  7. CentOS 配置DHCPv6
  8. 一张图了解软件测试流程
  9. 计算机ps基础知识大全,全国计算机ps一级考试题型
  10. 一阶系统开环传递函数表达式_自动控制总结:第五章、线性系统的校正方法
  11. WebSocket 原理 1
  12. 【AI应用】理解GPU的浮点计算能力
  13. RT系统+STM32+SYN8266播报+红外定时器
  14. Docker全命令详解
  15. 医院云存储服务器项目背景,医疗影像云存储解决方案
  16. 2010-2020年农业农村重要经济指标
  17. iMeta科学编辑招聘启事(可居家办公,弹性工作)
  18. 区块链:重新定义世界,崛起于草根的“颠覆性”技术
  19. 友盟统计封装android,Android Studio第十五期 - 友盟统计集成
  20. 无线电测向/定向越野运动中计分使用的打卡器的开发

热门文章

  1. e5 e3 php,硬件百科:E3/E5为什么让“垃圾佬”痴迷
  2. 零基础学python看什么书好?
  3. 现在ui设计出来好找工作吗?
  4. 初始JavaScript,世界上最流行的语言之一!
  5. matlab 病态方程组,数值分析(Hilbert矩阵)病态线性方程组的求解Matlab程序
  6. 我的世界JAVA版编程语言_Java版版本记录/开发版本
  7. linux 关闭虚拟化,虚拟化之KVM virsh常用命令篇
  8. 安装和启动mysql
  9. extjs 前后端分离_为什么我不喜欢「前后端分离」(个人观点,欢迎来喷)
  10. java string 分析_java String 可变性的分析