赞
踩
1,什么是反射
在程序开发中,常常会遇到这样的需求:在执行对象中的某个方法,或者在调用对象的某个变量,或是需要对对象的某个字段赋值,而方法名或是字段名在编码代码时并不能确定,需要通过参数传递字符串的形式输入。举个具体的例子:当我们需要实现一个通用的DBM框架时,可能需要对数据对象的字段赋值,但我们无法预知用到这个框架的数据对象都有些什么字段,换言之,我们在写框架的时候需要通过某种机制访问未知的属性。这时我们需要一个特殊的方法或者机制来访问或操作该未知的方法或变量,这种机制就被称之为反射(反过来让对象告诉我们他是什么),或是自省。
反射机制:通过字符串的形式,映射object对象对应的方法或属性,并且可以操作(查找or获取or删除or添加)对象成员。在Python中,一切都是对象object。因此,反射可以通过字符串导入模块,可以通过字符串找到类,也可以映射函数、方法、属性,并且能对其进行操作,例如修改属性、执行函数、导入类等等。
使用反射获取到的函数和方法可以像平常一样加上括号直接调用,获取到类后可以直接构造实例;不过获取到的字段不能直接赋值,因为拿到的其实是另一个指向同一个地方的引用,赋值只能改变当前的这个引用而已。
2,反射的方法
反射依赖以下四种方法实现对object对象的操作:
hasattr(obj,name_str) | 判断objec是否有name_str这个方法或者属性&#x |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。