Python_019(六星级别之反射方法)
1.反射
1)神赐给你的内置函数 :
a: getattr(命名空间,'函数名') == 命名空间.属性名; 这里的命名空间指的是对象或者类;
b: getattr四个应用场景:
1)类名.名字 <==> getattr(类名,'名字')
2)对象名.名字 <==> getattr(对象名,'名字')
3)模块名.名字 <==> getattr(模块名,'名字')
4)自己文件名.名字 <==> getattr(自己文件名,'名字')
c:getattr的天命圈
**getattr(命名空间,'函数名',默认值参数)这个默认值参数就很强大,getattr会先找指定成员,如果存在
则返回成员引用,否则返回默认值参数;但是你如果不传默认值参数,如果找不到会报错(它与hasttr异常处理的区别见下边解释)
所以总结来说,getattr就是把你用小数点调用的方式转换为getattr(命名空间,‘静态变量名/动态变量名)
2)hasattr():
a:功能指定对象中是否含有指定成员,有则返回True,否则返回False;
b:格式:hasattr(指定对象空间,变量名)
c:异常处理时与hasattr的区别:
imp = input('>>>:')
imp_module = __import__(imp)
while 1:
fun_name = input('>>>:')
func = getattr(imp_module,fun_name,True) #如果找不到,则返回默认参数
if func == True: #对找不到的情况处理
print('重新输入!')
continue
else:
a = func()
print(a) imp = input('>>>:')
imp_module = __import__(imp)
while 1:
fun_name = input('>>>:')
ret = hasattr(imp_module, fun_name) #查看指定对象里的情况,如果没有返回False
if ret == True: #对找不到的情况处理
func = getattr(imp_module,fun_name)
a = func()
print(len(a))
else:
print('重新输入!')
continue
第一段程序是利用默认值 第二段是利用hasattr(后者是对指定对象空间处理,比较精准)
3)setattr():
a: 功能:给指定对象添加指定成员
b:格式:setattr(对象空间,要改的变量名,新值)
4)delattr()
a:功能删除指定对象中的指定成员
b:格式delattr(对象空间,变量名)
Python_019(六星级别之反射方法)的更多相关文章
- 【转】第7篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:全自动注册与反射方法分析
作者: 牛A与牛C之间 时间: 2013-12-12 分类: 技术文章 | 2条评论 | 编辑文章 主页 » 技术文章 » 第7篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【转】第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析
作者: 牛A与牛C之间 时间: 2013-11-21 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第6篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【译】5. Java反射——方法
原文地址:http://tutorials.jenkov.com/java-reflection/methods.html ====================================== ...
- FastMethod和PropertyUtils两种反射方法的性能比较
这两个类都提供反射方法的实现,性能对比如下: 循环条件是:1亿次 结论:PropertyUtils提供的getXXX和setXXX反射方法的性能是FastMethod的三倍 以下是测试方法: 首先是F ...
- Python 中的反射方法
一.概述 getattr # 根据字符串为参数,去对象中找与之同名的成员. hasattr # 根据字符串为参数,去判断对象中是否有与之同名的成员. setattr # 根据字符串为参数,动态的设置一 ...
- 通过Relect反射方法创建对象,获得对象的方法,输出对象信息
package reflects; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java. ...
- C#中通过反射方法获取控件类型和名称
这个方法是简单的也是神奇的. 有木有想过,将自己项目中的所有类型,包括自定义类型的命名空间和名称全部获取出来? 有木有想过,有一种简便的方法可以自动化管理项目中的控件和窗体? 有木有想过... 首先, ...
- [javaSE] 反射-方法的反射
1.如何获取某个方法 方法的名称和方法的参数列表才能唯一决定一个方法 2.方法反射的操作 method.invoke(); package com.tsh.reflect; import java.l ...
- Java反射-方法(Method)
工作了三年,第二次使用反射! 遇到的问题描述: 多个页面查询后,返回的List中的对象属性为“.00”,页面显示不友好. 查询原因是因为查询数据的SQL为:to_char(a.applyAmount, ...
随机推荐
- Java第二周总结
一.Java 基础程序设计 第一章: (1)在Java中源文件的扩展名为.java,编译Java源程序文件产生相应的字节码文件扩展名为.class (2)public class定义要求类名称保持一致 ...
- roslyn\csc.exe
vs2019调试运行时提示roslyn\csc.exe错误时在nuget包管理器控制台里输入: Update-Package Microsoft.CodeDom.Providers.DotNetCo ...
- 1、Java语言概述与开发环境——Java程序运行机制
Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...
- vue 圆形进度条组件解析
项目简介 本组件是vue下的圆形进度条动画组件 自由可定制,几乎全部参数均可设置 源码简单清晰 面向人群 急于使用vue圆形进度条动画组件的同学.直接下载文件,拷贝代码即可运行. 喜欢看源码,希望了解 ...
- php配置伪静态如何将.htaccess文件转换 nginx伪静态文件
php通常设置伪静态三种情况,.htaccess文件,nginx伪静态文件,Web.Config文件得形式,如何将三种伪静态应用到项目中呢, 1,.htaccess文件 实例 <IfModule ...
- 开发jquery插件小结
用jquery开发插件其实很简单.今天实现了一个入门级别的功能. 随便来个DIV,便于理解. div{ height:100px;width:100px;display:block;backgroun ...
- 深入了解RabbitMQ工作原理及简单使用
深入了解RabbitMQ工作原理及简单使用 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchange介绍 ...
- activemq高可用
这里是基于 zookeeper 选举方式实现的集群配置,服务器过半数才可提供服务,所以是2n+1台这里以三台为例. 只有master节点能提供服务,slave节点无法提供服务,只有当master节点挂 ...
- Vue 中如何定义全局的变量和常量
Vue 中如何定义全局的变量和常量 我想要定义一个变量, 在项目的任何地方都可以访问到, 不需要每一次使用的时候, 都引入. 尝试1:创建 global.js 并且在其中定义 let a = 10 ...
- 什么是CPC,CPA,CVR,CTR,ROI
合格的网络营销人员都应该熟悉下面的常见英文缩写,这些都是我们必须知道的名词解释:CVR (Click Value Rate): 转化率,衡量CPA广告效果的指标CTR (Click Through R ...