Python学习【反射机制】

反射机制

反射机制的本质是以字符串形式在对象或模块中进行添加,查找,删除,获取成员等操作,是一种基于字符串的一系列事件驱动。

相关内置函数

  • getattr(object, name[, default])

    获取object对象中的name属性并返回其值,在name不存在时返回default,不设置则会抛出一个AttributeError。

  • setattr(object, name, value)

    设置object对象中name属性的值为value,name不存在时则创建属性并赋值。

  • hasattr(object, name)

    判断object对象中是否含有name属性,含有返回True,否则返回False。

  • delattr(object, name)

    删除object对象中的name属性。

  • import(name[, globals[, locals[, fromlist[, level]]]])

    参数为字符串,导入参数同名的模块或字符串。

    反射机制的应用

    有了以上内置函数,我们可以非常便利的实现动态的函数调用,模块导入,以及对象成员的“增删改查”等操作。

原文地址:http://blog.51cto.com/13992211/2348177

时间: 2024-10-31 02:16:19

Python学习【反射机制】的相关文章

python的反射机制

转载自:http://www.cnblogs.com/feixuelove1009/p/5576206.html 对编程语言比较熟悉的朋友,应该知道"反射"这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述python的反射机制的使用场景和核心本质. 一.前言 1 2 3 4 5 def f1():     print("f1是这个函数的名字!") s = "

简单谈谈python的反射机制

对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述python的反射机制的使用场景和核心本质. 一.前言 def f1(): print("f1是这个函数的名字!") s = "f1" print("%s是个字符串" % s) 在上面的代码中,我们必须区分两个概念,f1和“f1".前者是函数f1的

Java学习-反射机制入门

1.反射机制 我们在正常的使用过程之中只关心类产生对象,而后通过对象调用类之中的方法,可是,除了这种传统的方式外,也可以利用反射操作. 1.1.认识反射 既然有反,那么一定存在有正,正是指通过类产生对象,而后通过对象执行操作.而反呢?通过对象找到它所在类的信息.所有的对象都支持反这一操作,因为Object类有一个方法:public final Class<?> getClass(). 1 package cn.kvikon.demo; 2 import java.util.Date; 3 4

java学习——反射机制

/* * JAVA反射机制是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法: * 对于任意一个对象,都能够调用它的任意一个方法和属性: * 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. * * 动态获取类中信息,就是java反射 . * 可以理解为对类的解剖. * * 要想要对字节码文件进行解剖,必须要有字节码文件对象. * 如何获取字节码文件对象呢? * */ 1. 通过Class clazz =Class.forName()找

Java再学习-反射机制

首先说到反射,大家肯定不会陌生,如果不知道反射,相信那些市面上常用的主流框架就不会出现了.废话不说,上主题! Java反射机制 运行时 判断任意一个对象所属的类 构造任意一个类的对象 判断任意一个类所具有的成员变量和方法 调用一个对象的方法 注意点:运行时,而不是编译时 首先概念性的东西,小编就不细说了,想了解的直接问度娘吧,直接上干货吧. 通过反射来进行方法调用的具体步骤: 1.首先要获取Class对象(手段比较多,例如通过forname手段和InvokeTester.class手段) 2.如

python学习-反射

web框架路由实例 根据用户的输入的 URL 不同,调用不同的页面 account.py 模块中存放了 login,logout,home 三个页面函数 # /user/bin/env python __author__ = 'wenchong' def login(): print('这是一个登陆页面') def logout(): print('这是一个退出页面') def home(): print('这是主页') web.py 文件为框架入口文件,通过 if...elif...else

Python学习——反射

class Foo(object): def __init__(self): self.name = 'wupeiqi' # self.age = age def func(self): print("func is running.") return 'func' obj = Foo() # #### 检查是否含有成员 #### print(hasattr(obj, 'name')) print(hasattr(obj, 'func')) # # #### 获取成员 #### pri

Python 的反射机制

什么叫做反射 利用字符串的形式去对象(模块)中操作(查找/添加/获取/删除)成员,一种基于字符串的事件驱动. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型.然后,可以调用类型的方法或访问其字段和属性. 函数简介 hasattr(*args, **kwargs):判断对象(模块)中某个函数或者变量是否存在 setattr(x, y, v):给对象(模块)添加一个函数或变量 getattr(object, name, default=None):获取对象(模块)中的

Python的反射机制、hasattr() getattr() setattr() 函数使用方法详解

hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 >>> class test(): 2 ... name="xiaohua" 3 ... def run(self): 4 ... return "HelloWord" 5 ... 6 >>> t=test() 7 >>&

python学习——反射练习

1.类变量和实例变量的区别? 类变量:类内定义的变量 实例变量:类外定义的变量 2.super的作用? 调用对象按照调用函数继承类的顺序寻找下一个 3.isinstance和type的区别并用代码举例说明 isinstance 检查第一个参数(对象)是否时第二个参数(类)的实例 class Foo(object): pass obj = Foo() print(obj,isinstance(obj,Foo)) type是获取对象是哪个类创建的 class Foo(object): pass ob