python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

# commons.py 文件

name = "nick"

def f1():
return "This is f1." def f2():
return "This is f2." def nb():
return "This is niubily." # index.py 文件
import commons #根据字符串的形式去某个模块中寻找东西
target_func = getattr(commons,"f1") # 找函数
result = target_func()
print(result) target_func = getattr(commons,"name") # 找全局变量
print(target_func) target_func = getattr(commons,"age",None) # 找不到返回None
print(target_func) #根据字符串的形式去某个模块中判断东西是否存在
tarhas_func = hasattr(commons,"f5") # 找函数
print("before:",tarhas_func) # tarhas_func = hasattr(commons,"name") # 找全局变量
# print(tarhas_func) #根据字符串的形式去某个模块中设置东西
setattr(commons,"f5","lambda x: return \"This is new func.\"") # 设置一个函数
setattr(commons,"age",18) # 设置全局变量 tarhas_func = hasattr(commons,"f5") # 检查函数是否存在
print("after:",tarhas_func) #根据字符串的形式去某个模块中删除东西
delattr(commons,"f5") # 删除一个函数 tarhas_func = hasattr(commons,"f5") # 检查函数是否存在
print("end:",tarhas_func)

对象实例

class Foo:
def __init__(self,name,age):
self.name=name
self.age=age def show(self):
print("获取到了该函数方法") obj=Foo('2018世界杯',2018)
#hasattr 是否存在字段
print(hasattr(obj,'name'))
#getattr获取信息
getname=getattr(obj,'name')
print(getname)
#setattr赋值
setattr(obj,'time','2018-6-16')
print(obj.time)
#delattr删除
delattr(obj,'name')
print(obj.name)#删除后报错AttributeError: 'Foo' object has no attribute 'name'

Python ————反射机制的更多相关文章

  1. Python反射机制理解

    Python反射机制用沛齐老师总结的话说就是:利用字符串的形式去对象(模块)中操作(寻找)成员. getattr(object, name) object代表模块,name代表模块中的属性或成员,该函 ...

  2. python反射机制深入分析

    对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述pyth ...

  3. python 反射机制在实际的应用场景讲解

    剖析python语言中 "反射" 机制的本质和实际应用场景一. 前言 def s1(): print("s1是这个函数的名字!") s = "s1&q ...

  4. Python 反射机制之hasattr()、getattr()、setattr() 、delattr()函数

    反射机制 先看看我对Java中反射机制的通俗理解:反射之中包含了一个“反”的概念,所以要想解释反射就必须先从“正”开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产生实例化 ...

  5. python: 反射机制;

    import comma def run(): inp = input('请输入要调用的函数').strip(); if hasattr(comma,inp): fun = getattr(comma ...

  6. Python 反射机制

    Python的反射机制 Python的反射机制,就是反射就是通过字符串的形式,导入模块:通过字符串的形式,去模块寻找指定函数,并执行.利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员 ...

  7. 【Python】python 反射机制在实际的应用场景讲解

    剖析python语言中 "反射" 机制的本质和实际应用场景一. 前言 def s1(): print("s1是这个函数的名字!") s = "s1&q ...

  8. Python面试题之Python反射机制

    0x00 前言 def f1(): print('f1') def f2(): print('f2') def f3(): print('f3') def f4(): print('f4') a = ...

  9. python 反射机制 ( 广泛应用于URL参数)

    web实例 考虑有这么一个场景,根据用户输入的url的不同,调用不同的函数,实现不同的操作,也就是一个url路由器的功能,这在web框架里是核心部件之一.下面有一个精简版的示例: 首先,有一个comm ...

随机推荐

  1. JSBridge 知识点

    比较好的介绍文章: Android中JSBridge的原理与实现

  2. react:路由登陆后才能访问的控制

    react-router 通过创建一个 需要认证的路由 来限制登陆后才能访问. 官方例子:https://reacttraining.com/react-router/web/example/auth ...

  3. 代理模式proxy

    代理模式的共同优点如下: (1) 能够协调调用者和被调用者,在一定程度上降低了系统的耦合度. (2) 客户端可以针对抽象主题角色进行编程,增加和更换代理类无须修改源代码,符合开闭原则,系统具有较好的灵 ...

  4. instanceof isInstance isAssignableFrom 比较

    instanceof  :  java 的关键字 判断一个 实例对象 是不是 可以赋值 给一个 class(  实例对象是不是 class 或者 subClass 的实现 ),表示的类和对象之间的关系 ...

  5. linux清空文件内容的三种方法

    linux系统中清空文件内容的三种方法 1.使用vi/vim命令打开文件后,输入"%d"清空,后保存即可.但当文件内容较大时,处理较慢,命令如下:vim file_name:%d: ...

  6. C#:匿名类型

    匿名类型和var关键字是Visual C# 3.0提供的一个新特性,var是隐式类型而并不是类型javascript中的var. var user = new { Id = 1, Name = &qu ...

  7. asp.net:如何实现负载均衡方案讨论 (nginx+iis实现负载均衡)

    5台阿里云服务器,ip地址分别为 ip地址                      名字简称      操作系统       iis服务器     cpu   内存DDR3      机械硬盘 11 ...

  8. GTX_SDI搭建流程

    GTX_SDI搭建流程 1.GTX wrapper 因为顶层的GTX wrapper在实际的SDI工程中用不到,我们只是需要GTX wrapper模块中的部分文件.因此,在SDI工程中,我们并不需要生 ...

  9. php each和list的用法

    each与list的用法(PHP学习) 1.each的用法 先看API array each ( array &$array ) api里是这么描述的:each — 返回数组中当前的键/值对并 ...

  10. 在windows server上配置java jdk后,可能要些时间生效。

    特别是程序调用java写的bat脚本时.