百科定义:

在计算机学中,反射式编程(英语:reflective programming)或反射(英语:reflection),是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。[1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。

要注意术语“反射”和“内省”(type introspection)的关系。内省(或称“自省”)机制仅指程序在运行时对自身信息(称为元数据)的检测;反射机制不仅包括要能在运行时对程序自身信息进行检测,还要求程序能进一步根据这些信息改变程序状态或结构。

通读一遍,貌似没啥感觉。关键词:

1,运行时。

python中有自带方法实现。

__import____import__() 函数用于动态加载类和函数 。如果一个模块经常变化就可以使用 __import__() 来动态载入。getattr:getattr(object,name)判断对象是否有name属性delattr:delattr(object,name)hasattr:hasattr(object, name)判断对象是否有name属性setattr:setattr(object, name, value)设置对象是否有name属性,值为value# encoding:utf-8
import commonprint(eval('123+345'))
exec('print (3*6)')# EVAL简单表达式
print(eval('123+345'))# 复杂表达式
a = '''b=1;print (3*6);print ('what');b=123'''
exec(a)
print(b)18
what
123class Dog(object):def __init__(self, name):self.name = namedef speak(self):print('哇哇哇' + self.name)# without reflection
dog1 = Dog('小黄')
dog1.speak()# reflection
reflect = getattr(Dog('小黄'), 'speak')
reflect()a = Dog('柴狗')setattr(a, 'sex', 'male')
print(a.name, a.sex)print(hasattr(a, 'food'))if __name__ == "__main__":pass468
18
哇哇哇小黄
哇哇哇小黄
柴狗 male
False

在运行时,获取到类的信息,包括属性,方法名等。通过字符串来调用内存中的方法,类。

作用:

给定的程序,适应不同情况,动态调用不同方法。

进阶:

有种多态的味道。

反射指在程序运行时,能够检测,使用,修改程序的一种概念。在编译型语言中,通常变量的类型在编译的时候就已经确定,变量名只是个符号,操作系统只知道内存地址。因此,如果在运行时根据需要确定对象,方法。就可以使用反射来实现此功能。比如(根据输入的指令运行哪种方法)。

正常我们定义一个变量 ,需要提供类型,根据类型使用这个变量的方法,属性。

方向:

类型----》变量

反射:

变量---》类型

而在反射中我们在运行态,在运行前计算机不知道这个泛性变量具体是什么类型也就不知道执行什么方法,修改什么属性,此时语言提供一种反射模式,能够将内存中的变量的属性,方法获取出来,供程序使用。

反射模式python相关推荐

  1. C++实现类似反射模式(模板)

    C++实现类似反射模式(模板) 编程技巧 2010-11-23 21:08:02 阅读70 评论0   字号:大中小 订阅 最近在编写遥感算法工具箱的时候,工具都是在xml文件中配置好的,在工具箱上构 ...

  2. C++实现类似反射模式

    在编写遥感算法工具箱的时候,工具都是在xml文件中配置好的,在工具箱上构建一棵树根据xml配置文件,然后通过双击不同的树节点,弹出不同的算法对话框.最简单的方式就是使用if else 或者switch ...

  3. 中介模式(python实现2)

    相较前一个中介模式(python实现)来说,本例子实现了多个中介者的情况 from abc import ABCMeta, abstractmethod from enum import Enumcl ...

  4. java反射出抽象类的实现类_java利用反射模式调用实现类

    本文主讲,java利用反射模式调用接口的实现类.抽象类的继承子类.下面请听一一道来 1.第一步在src下创建com.newer.reflex包 2.在com.newer.reflex包下面建立IRef ...

  5. JAVA利用反射模式调用实现类

    本文主讲,利用反射模式调用接口的实现类.抽象类的继承子类.下面请听屌丝一一道来 1.第一步在src下创建 com.newer.reflex包 2.在com.newer.reflex包下面建立 IRef ...

  6. python的编程模式-Python设计模式之状态模式原理与用法详解

    本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...

  7. python的编程模式-python编程(python开发的三种运行模式)【转】

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 单循环模式 多线程模式 reactor模式 [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing ...

  8. python的编程模式-Python设计模式:为了整洁又时尚的代码

    关键时刻,第一时间送达! 作者ANDREI BOYANOV - 高级软件工程师 @TOPTAL 让我们再重申一下:Python是一种具有动态类型和动态绑定的高级编程语言.我将它描述为一个强大的高级动态 ...

  9. Python如何实现单例模式?其他23中设计模式python如何实现?

    单例模式主要有四种方法:new.共享属性.装饰器.import. # __ new__方法:class Singleton(object):def __new__(cls, *args, **kw): ...

最新文章

  1. PHP开发中,让var_dump调试函数输出更美观 ^_^#
  2. 【Swift】变量/常量/类型总结
  3. c++ 判断数学表达式有效性_C运算符和表达式、if判断、switch与逻辑运算、循环语句...
  4. QTextStream 的简单理解
  5. Less语法基于node\grunt/gulp编译
  6. P3804-[模板]后缀自动机【SAM】
  7. python xlrd读取文件报错_python中xlrd库如何实现文件读取?
  8. linux 缩小链接库体积,两个奇技淫巧,将 Docker 镜像体积减小 99%
  9. php自动滚动到页尾,让DOM元素自动滚到视野内ScrollIntoView
  10. 【Android手机测试】OOM
  11. 微软威胁情报中心总经理 John Lambert 谈安全
  12. python函数大全pdf_python内置函数大全.pdf
  13. Win10 安装 XPS查看器
  14. 方方格子授权码_助力上分!灌篮高手正版授权手游礼包码攻略及防守技巧汇总...
  15. 各种文件后缀名与打开方式大全
  16. 从零开始的计网学习——计算机网络概述(计网入门就看这篇!)
  17. python中bin函数如何使用?
  18. 设置webview的浏览器标识 User-Agent
  19. 函数极限:函数在一点处的极限
  20. 【Java】花费数十小时,带你体验Java文档搜索引擎的实现过程

热门文章

  1. 02384计算机原理2019真题,全国2002年10月自考02384计算机原理试卷
  2. 第十二周项目4-利用遍历思想求解图问题(6-7)
  3. android 输入法 悬浮窗口,Android EditText悬浮在输入法之上
  4. TOPSIS法(理想解法)
  5. 创新电影院实现千人千影,深化海外计划
  6. 决策引擎应用场景的特性
  7. 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
  8. linux安装git及使用
  9. “Unable to create the directory [XXX] to use as the base directory”的解决办法
  10. Lambda expression are not supported at language level '5'