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(六星级别之反射方法)的更多相关文章

  1. 【转】第7篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:全自动注册与反射方法分析

    作者: 牛A与牛C之间 时间: 2013-12-12 分类: 技术文章 | 2条评论 | 编辑文章 主页 » 技术文章 » 第7篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  2. 【转】第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析

    作者: 牛A与牛C之间 时间: 2013-11-21 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第6篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  3. 【译】5. Java反射——方法

    原文地址:http://tutorials.jenkov.com/java-reflection/methods.html ====================================== ...

  4. FastMethod和PropertyUtils两种反射方法的性能比较

    这两个类都提供反射方法的实现,性能对比如下: 循环条件是:1亿次 结论:PropertyUtils提供的getXXX和setXXX反射方法的性能是FastMethod的三倍 以下是测试方法: 首先是F ...

  5. Python 中的反射方法

    一.概述 getattr # 根据字符串为参数,去对象中找与之同名的成员. hasattr # 根据字符串为参数,去判断对象中是否有与之同名的成员. setattr # 根据字符串为参数,动态的设置一 ...

  6. 通过Relect反射方法创建对象,获得对象的方法,输出对象信息

    package reflects; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java. ...

  7. C#中通过反射方法获取控件类型和名称

    这个方法是简单的也是神奇的. 有木有想过,将自己项目中的所有类型,包括自定义类型的命名空间和名称全部获取出来? 有木有想过,有一种简便的方法可以自动化管理项目中的控件和窗体? 有木有想过... 首先, ...

  8. [javaSE] 反射-方法的反射

    1.如何获取某个方法 方法的名称和方法的参数列表才能唯一决定一个方法 2.方法反射的操作 method.invoke(); package com.tsh.reflect; import java.l ...

  9. Java反射-方法(Method)

    工作了三年,第二次使用反射! 遇到的问题描述: 多个页面查询后,返回的List中的对象属性为“.00”,页面显示不友好. 查询原因是因为查询数据的SQL为:to_char(a.applyAmount, ...

随机推荐

  1. python每日一练:0011题

    第 0011 题: 敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,否则打印出 Human Rights. 北京 程序员 公 ...

  2. 5.使用github脚本LAZY----几个最好的发行版----自定义终端----基本命令

    使用现成的脚本 LAZY * 如果您不想手动设置,可以用这个脚本帮您设置 访问:github.com/arismelachroinos/lscript sudo apt-get git git clo ...

  3. [转帖]100G QSFP28与CFP,CFP2,CFP4光模块的比较

    100G QSFP28与CFP,CFP2,CFP4光模块的比较 https://www.eefocus.com/etulink/blog/17-09/423967_5c520.html 数据中心网络发 ...

  4. kubernetes快速应用入门

    kubectl 就是 api server的客户端工具 创建一个nginx的pod [root@master ~]# kubectl run nginx-deploy --image=nginx:1. ...

  5. PhoneGap学习网址

    官网:http://app-framework-software.intel.com/ 下载地址:http://download.csdn.net/download/haozq2012/7635951

  6. promise和async/await的用法

    promise和async都是做异步处理的, 使异步转为同步 1.promise 它和Promise诞生的目的都是为了解决“回调地狱”, promise使用方法: <button @click= ...

  7. PHP 经典有趣的算法

    原文:https://blog.csdn.net/a519395243/article/details/77942913 1.一群猴子排成一圈,按1,2,…,n依次编号.然后从第1只开始数,数到第m只 ...

  8. Linux命令(持续更新)

    1. tail 命令    tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件. tail  -f  filename 会把 filename 文件里的最尾部的内 ...

  9. 【算法入门】深度优先搜索(DFS)

    深度优先搜索(DFS) [算法入门] 1.前言深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解 ...

  10. 自动清理ES索引脚本

    #/bin/bash #指定日期(3个月前) DATA=`date -d "3 month ago" +%Y.%m.%d` #当前日期 time=`date` #删除3个月前的日志 ...