python-day6-反射

python的反射

反射:利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员,主要用于伪造web框架中的路由系统

 1 #我们首先定义一个common模块用于存储url调用模块中的对应的函数
 2 def login():
 3     print(‘login‘)
 4
 5 def home():
 6     print(‘home‘)
 7
 8 #主模块中
 9 #调用common模块
10 import common
11
12 def run():
13     inp =input(‘输入要访问的页面!‘)
14     #inp字符串类型inp=‘login‘
15     #commons inp()#commons.login
16     #利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员
17     if hasattr(common,inp):
18         #getattr根据第一个模块参数去调用第二个字符串参数
19         func=getattr(common,inp)
20         func()
21     else:
22         print(‘404‘)
23
24 run()
25 #运行
26 >>>输入要访问的页面!login
27 >>>login    

第二种方式:

 1 #common模块定义url
 2 def login():
 3     print(‘login‘)
 4
 5 def home():
 6     print(‘home‘)
 7
 8
 9 #利用vars函数将字符串转换成变量的形式进行调用
10 import common
11 def run():
12     inp =input(‘输入要访问的页面!‘)
13     if hasattr(common,inp):
14         func=vars(common)[inp]
15         func()
16     else:
17         print(‘404‘)
18
19
20
21 if __name__ == ‘__main__‘:
22     run()
23
24 >>>输入要访问的页面!login
25 >>>login
 1 #多层url的调用:不同模块中存在不同的url调用函数的情况下
 2 #模块mommon
 3 def login():
 4     print(‘login‘)
 5
 6 def home():
 7     print(‘home‘)
 8
 9 #模块mommon2
10
11 def f1():
12     print(‘f1‘)
13
14 def f2():
15     print(‘f2‘)
16
17 #主函数
18 inp = input(‘输入要访问的页面!‘)
19 e, f = inp.split(‘/‘)
20
21 #__import__内置方法用于将输入字符串转化为对应模块进行调用
22 obj = __import__(e)
23 if hasattr(obj,f):
24     func = getattr(obj,f)
25     func()
26 else:
27     print("404")
28
29 >>>输入要访问的页面!common/login
30 >>>login
31 >>>输入要访问的页面!common2/f1
32 >>>f1
时间: 2024-08-08 13:11:25

python-day6-反射的相关文章

python_way day6 反射,正则 模块

python_way day6 反射 正则 模块 一.模块: 1.sys & os: 我们在写项目的时候,经常遇到模块互相调用的情况,但是在不同的模块下我们通过什么去可以找到这些模块的位置哪? 那就是环境变量! 如何查看当前的环境变量?a = sys.pathprint(a)['D:\\资料\\python\\oldboy13\\jobs\\day5\\conf', 'D:\\资料\\python\\python35\\lib\\site-packages\\requests-2.10.0-py

day6 反射,hashlib模块,正则匹配,冒泡,选择,插入排序

一.反射(自省) 首先通过一个例子来看一下本文中可能用到的对象和相关概念. import sys # 模块,sys指向这个模块对象import inspectdef foo(): pass # 函数,foo指向这个函数对象 class Cat(object): # 类,Cat指向这个类对象 def __init__(self, name='kitty'): self.name = name def sayHi(self): # 实例方法,sayHi指向这个方法对象,使用类或实例.sayHi访问

python的反射

目前大多数网站都是通过路由的方法来,处理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

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的

Python之反射练习

Python之反射练习 # 什么是反射?可以用字符串的方式去访问对象的属性 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

python 模块 反射

模块 os模块 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') os.makedirs('dir1/dir2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os

第六章:Python基础の反射与常用模块解密

本課主題 反射 Mapping 介绍和操作实战 模块介绍和操作实战 random 模块 time 和 datetime 模块 logging 模块 sys 模块 os 模块 hashlib 模块 re 模块 本周作业 反射 Mapping 介绍和操作实战 反射是利用字符串的形式去对象 (模块) 中操作 (寻找/检查) 成员 案例例子 假设创建了一个common.py 程序里而有3个功能,比如网站里的登录页面.主页页面还有登出页面都是不同的页面,要显示的内容都不一样. def login(): p

python对象反射和函数反射

[原文] python的对象反射功能,经常在编程时使用.相比较其它的编程语言使用非常方便.反射就是用字符串来操作对象或者类,模块中的成员. 一.对象的反射 反射功能的实现,由这4个内置函数来实现(hasattr, getattr, setattr, delattr) 1.1.hasattr判断是否有某个成员 判断对象中是否有属性, 方法.返回bool值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/usr/bin/env python

关于PYTHON的反射,装饰的练习

从基本概念,简单例子才能慢慢走到高级一点的地方. 另外,PYTHON的函数式编程也是我很感兴趣的一点. 总体而言,我觉得OOP可以作大的框架和思路,FP能作细节实现时的优雅牛X. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~“自省”应该是原本的概念,特指在运行时获得object自身信息,这一能力“反射”是自省的一种实现方式,是具体的.自省是“道”,反射是“术”. 好比“变量作用域”是一种概念