python-day6-反射

Posted ppppppy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于python-day6-反射的主要内容,如果未能解决你的问题,请参考以下文章

java 反射代码片段

python-Day6

Python-Day6

从零开始学Python-day6

python-day6-configparser模块,xml.etree模块

python-day6-os模块及md5加密