python之-- 反射】的更多相关文章

转载自:http://www.cnblogs.com/feixuelove1009/p/5576206.html 对编程语言比较熟悉的朋友,应该知道"反射"这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述python的反射机制的使用场景和核心本质. 一.前言 1 2 3 4 5 def f1():     print("f1是这个函数的名字!")   s = &qu…
目前大多数网站都是通过路由的方法来,处理url请求,如果有很多个url的话,不停的include或者用if判断匹配,似乎不太符合情理,因此这里讲讲python的反射机制, 自动装在模块.请看下面的实例: 在目录 /myspace/mywork/python/reflect 有两个文件 index.py account.py account.py内容 #encoding=utf-8 def login(uname): print '恭喜你登录成功'+uname index.py内容 #encodi…
转:http://www.jb51.net/article/87479.htm 本文主要介绍python中的反射,以及该机制的简单应用,熟悉JAVA的程序员,一定经常和Class.forName打交道.在很多框架中(Spring,eclipse plugin机制)都依赖于JAVA的反射能力,而在python中,也同样有着强大的反射能力,本文将做简单的介绍 对编程语言比较熟悉的朋友,应该知道"反射"这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到…
[转]简单谈谈python的反射机制 对编程语言比较熟悉的朋友,应该知道“反射”这个机制.Python作为一门动态语言,当然不会缺少这一重要功能.然而,在网络上却很少见到有详细或者深刻的剖析论文.下面结合一个web路由的实例来阐述python的反射机制的使用场景和核心本质. 一.前言 def f1(): print("f1是这个函数的名字!") s = "f1" print("%s是个字符串" % s) 在上面的代码中,我们必须区分两个概念,f1…
Python进阶----反射(四个方法),函数vs方法(模块types 与 instance()方法校验 ),双下方法的研究 一丶反射 什么是反射: ​ 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(反射).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩. Python面向对象的反射: ​ 通过字符串的形式操作对象相关的属性.python中的一切事物都…
本节主要内容: 一. 反射: getattr hasattr setattr defattr 二. 补充模块中特殊的变量 三. 正则表达式 re模块 (一)反射: hasattr(object, name)    检查 getattr(object, name)    寻找 setattr(object, name, value)    设置 delattr(object, name)    删除 说明:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(oj…
从基本概念,简单例子才能慢慢走到高级一点的地方. 另外,PYTHON的函数式编程也是我很感兴趣的一点. 总体而言,我觉得OOP可以作大的框架和思路,FP能作细节实现时的优雅牛X. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~“自省”应该是原本的概念,特指在运行时获得object自身信息,这一能力“反射”是自省的一种实现方式,是具体的.自省是“道”,反射是“术”. 好比“变量作用域”是一种概念…
一.前言 def f1(): print('f1') def f2(): print('f2') def f3(): print('f3') def f4(): print('f4') a = 1 test.py import test as ss ss.f1() ss.f2() print(ss.a) 我们要导入另外一个模块,可以使用import.现在有这样的需求,我动态输入一个模块名,可以随时访问到导入模块中的方法或者变量,怎么做呢? imp = input("请输入你想导入的模块名:&qu…
本课主题 反射 Mapping 介绍和操作实战 模块介绍和操作实战 random 模块 time 和 datetime 模块 logging 模块 sys 模块 os 模块 hashlib 模块 re 模块 本周作业 反射 Mapping 介绍和操作实战 反射是利用字符串的形式去对象 (模块) 中操作 (寻找/检查/删除/设置) 成员,以後看其他源碼的時候會經常看到反射,最有代表性的就是 Tornado 和 Django 框架 案例例子 假设创建了一个common.py,程序里有3个功能,比如网…
异常 反射 一.异常处理: AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本上是无法打开文件 ImportError 无法引入模块或包:基本上是路径问题或名称错误 IndentationError 语法错误(的子类) :代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError 试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C…
一. 反射 1. isinstance()和issubclass() isinstance( 对象名, 类名) : 判断对象所属关系,包括父类  (注:type(对象名) is 类名 : 判断对象所属关系,只包括当前的类.) issubclass(类名, 类名) : 判断类与类之间的继承关系 class A: pass class B(A): pass b = B() print(isinstance(b, B)) # True 判断对象b是否属于B类 print(isinstance(b, A…
先模拟一个web页面的选择不同输出不同 vim day8-7.py #!/usr/bin/python # -*- coding:utf-8 -*- import home import account print 'oldboy...' url = raw_input('url:') if url == 'home/dev': ret = home.dev() print ret elif url == 'home/index': ret = home.index() print ret el…
python的对象反射功能,经常在编程时使用.相比较其它的编程语言使用非常方便.反射就是用字符串来操作对象或者类,模块中的成员. 一.对象的反射 反射功能的实现,由这4个内置函数来实现(hasattr, getattr, setattr, delattr) 1.1.hasattr判断是否有某个成员 判断对象中是否有属性, 方法.返回bool值 #!/usr/bin/env python # -*-coding:utf-8-*- class Foo(object): country = "chin…
一.反射 通过字符串的形式操作对象相关的属性.(使用字符串数据类型的变量名来获取这个变量的值) Python中的一切事物都是对象(都可以使用反射) 反射类中的变量 反射对象中的变量 反射模板中的变量 反射本文件中的变量 用反射的场景: input 网络 文件 #hasattr def hasattr(*args, **kwargs): # real signature unknown """ Return whether the object has an attribute…
isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 判断这个对象是不是这个类,或者是不是这个类的子类的实例化 class Foo(object): pass obj = Foo() isinstance(obj, Foo) issubclass(sub, super)检查sub类是否是 super 类的子类(派生类 ) class Foo(object): pass class Bar(Foo): pass issubclas…
什么是反射 光在两种物质分界面上改变传播方向又返回原来物质中的现象,叫反射! 以上,是反射的物理定义,与python中的反射概念,完全没有任何关系 书归正传:反射 就是通过字符串的形式,操作对象相关的属性 反射的相关函数: hasattr(object,"name") #返回bool类型,判断object的命名空间中是否存在name这个名字 #存在返回True #不存在返回Flase obj = getattr(object,"name") #获得Object中名称…
python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 一.getattr 对象获取 class Manager: role = "管理员" def __init__(self,name,sex,phone,mail): self.name = name self.sex = sex self.phone = phone self.mail = mail def createClass(self): print("…
目录 1. 类的反射 1.1 实例对象 1.2 类 1.3 其他模块 -- 其他.py文件 1.4 本模块 -- 当前.py文件 2. 函数与方法的区别 2.1区别的方法: 2.2 总结 3. 特殊的双下方法 3.01 __len__ (len一下对象就触发) 3.02 __hash__ (hash一下对象就触发) 3.03 __str__ (打印对象触发.str()也会触发) 3.04 __repr__ (打印对象和repr()都会触发) 3.05 __call__ (对象名(),触发) 3.…
什么是反射? 1.有时我们要访问某个变量或是方法时并不知道到底有没有这个变量或方法,所以就要做些判断.判断是否存在字符串对应的变量及方法.2.我们知道访问变量时是不能加引号的,否则会被当成字符串处理.如果要通过字符串找到对应的变量,那该怎么办呢 反射就是用于解决上面两个问题而产生的,所谓反射,按我的理解就是反过来告诉我字符串是什么,是变量or方法 python中访问类或对象的成员有三种方法 ##如下所示 obj 为对象 var为变量 func为函数1.obj.var 或 obj.func()2.…
目录 pythdon day 10 1. 反射补充 16. 面向对象 16.1 面向对象初步介绍 16.2 面向对象和面向过程区别 16.3 对象的进化 17. 类class 17.1 类的定义 17.2 __init__构造方法和__new__方法 17.3 实例属性和实例方法 17.4 类对象/类属性/类方法/静态方法 17.5 del()方法(析构函数)和垃圾回收机制 17.6 call()方法和可调用对象 17.7 方法没有重载/方法的动态性 17.8 私有属性和私有方法(实现封装) 1…
反射 reflect 反射(reflect)其实是反省,自省的意思 反省:指的是一个对象应该具备可以检测.修改.增加自身属性的能力 反射:通过字符串获取对象或者类的属性,进行操作 设计框架时需要通过反射去检测类的属性,去调用他们 反射涉及的四个函数 ​ 这四个就是普通的内置函数,没有双下划线,与print等等没有区别 hasattr getattr setattr delattr class Person: def __init__(self, name, age, gender): self.…
反射 反射就是通过 内置函数getattr() 以字符串的形式导入模块,以字符串的形式调用模块/对象里方法 l=['add','del','set','find'] for i in l: print(i) choice=input("请输入您需要的操作:".strip()) mode=__import__(choice) #相当于 import 模块 getattr(mode,choice[0])() #获取 模块里定义的方法(函数)并且执行: 迭代器 Python的数据类型分为 不…
● 共两个文件:userInfo,reflex.py alex|123456|Manager hezewei|666|Student taibai|2222|Teachar userInfo #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/9/27 11:26 # @Author : zejin # @File : reflex.py # 关于反射 class Manager: OPERATE_DIC = [ ("创建学生…
一.反射 什么是反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),python中一切皆对象,都可以使用放射. 反射的四种方法: hasattr:hasattr(object.name)判断一个对象是否有name属性或者是name方法.有就返回True,没有就返回False getattr:获取对象的属性或者方法,如果存在则打印出来. serattr:给对象的属性赋值,若属性不存在,先创建后赋值 delattr:删除该对象指定的一个属性 二.内置方法 https://…
一.引言 有时候我们会碰到类似这样的需求,就是想要执行类的某个方法,或者需要对对象的某个参数赋值,而方法名或参数名已经包装在类中并不能去顶,需要通过参数传递字符串的形式输入.在这样的情况你会选择什么样的办法来解决吗?例如: #!/usr/bin/env python # -*- coding=utf-8 -*- class Action(object): def dog(self): print("汪汪汪") def cat(self): print("喵喵喵")…
反射: 1.可通过字符串的形式导入模块 1.1.单层导入 __import__('模块名') 1.2.多层导入 __import__(' list.text.commons',fromlist=True) #如果不加上fromlist=True,只会导入list目录 2.可以通过字符串的形式执行模块的功能 import glob,os modules = [] for module_file in glob.glob("*-plugin.py"): try: module_name,e…
一.反射 反射类中的变量 反射对象中的变量 反射模块中的变量 反射本文件中的变量 .定义:使用字符串数据类型的变量名 来获取这个变量的值 例如: name = 'xiaoming' print(name) # xiaoming print('name') # name 平时我们要想获取'xiaoming'这个值,要用name去获取,但是如果想用字符串'name' 获取这个值呢, 就需要用到反射. .反射应用的场景(就是把接收的字符串转换成变量的名字便于使用) ,input 用户输入的如果是a,那…
什么叫做反射 利用字符串的形式去对象(模块)中操作(查找/添加/获取/删除)成员,一种基于字符串的事件驱动. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型.然后,可以调用类型的方法或访问其字段和属性. 函数简介 hasattr(*args, **kwargs):判断对象(模块)中某个函数或者变量是否存在 setattr(x, y, v):给对象(模块)添加一个函数或变量 getattr(object, name, default=None):获取对象(模块)中的…
1.isinstance ,type, issubclass       isinstance:判断给的对象是否是**类型       type:返回**对象的数据类型       issubclass:判断**类是否**的子类 class Animal: def eat(self): print('动物的世界你不懂') class Cat(Animal): def play(self): print('毛霸王') c = Cat() print(isinstance(c,Cat)) # Tru…
# 什么是反射?可以用字符串的方式去访问对象的属性 class Test(): _name = "sss" def fun(self): return "Helloword" t = Test() # print(hasattr(t,"_name")) #hasattr(obj,name)#查看类里面有没有name属性 # print(hasattr(t,"fun")) #True if hasattr(t,"_na…