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, ...
随机推荐
- ugui拖拽
整理了下以前写的 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityE ...
- 【Qt开发】Qt中图像的显示与基本操作
Qt可显示基本的图像类型,利用QImage.QPxmap类可以实现图像的显示,并且利用类中的方法可以实现图像的基本操作(缩放.旋转). 1. Qt可显示的图像类型 参考Qt的帮助文档,可支持的类型,即 ...
- 分享一个linux系统中循环遍历两个数组内容,并输出数组中的不同内容的shell脚本
cat diffarray.sh #!/bin/bash arry_list1=(1 2 3 4 5 6 7 8 9) arry_list2=(3 5 8) declare -a diff_list ...
- IntelliJ IDEA 2019.3 这回真的要飞起来了,新特性抢先看!
IntelliJ IDEA 才公布下一个主要版本 2019.3 的 Roadmap,近日就发布了 IntelliJ IDEA 2019.3 的首个早期访问版本(即 EAP 版本),版本号为 2019. ...
- Linux文件与目录操作 ls 命令(2)
说文件操作是最频繁地操作也不为过,在Linux中,使用ls命令可以列出当前目录中所有内容,本篇就先说说ls命令.本文所说的文件指文件和目录. ls命令常用选项 -a:显示指定目录下所有子目录与文件,包 ...
- linux中文件IO
一. linux常用文件IO接口 1.1. 文件描述符 1.1.1. 文件描述符的本质是一个数字,这个数字本质上是进程表中文件描述符表的一个表项,进程通过文件描述符作为index去索引查表得到文件表指 ...
- glVertexAttribPointer 顶点数据解析方式
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); 第一个参数指定从索引0开始取数据,与顶点着色器中layout(location=0)对应. ...
- POJ 3549 GSM phone(圆+扫描线+最短路)
题目意思是求起点s到终点s的最短路,但是只能在圆的内部和边上走.一种可以想到的方法就是求出所有的交点,然后两两连边并验证合法性,但是这样的交点数规模有n2. 我们可以观察发现,我们在圆求并构成的图形中 ...
- 17: VUE数据绑定 与 Object.defineProperty
VUE数据绑定原理:https://segmentfault.com/a/1190000006599500?utm_source=tag-newest Object.defineProperty(): ...
- PythonDay06
第六章 今日内容 小数据池 深浅拷贝 集合 小数据池 == is id == 判断两个值是否相等 is --- 是 判断两个值的内存地址是否相等 代码块:一个py文件,一个函数,一个模块,终端中每一行 ...