码迷,mamicode.com
首页 > 编程语言 > 详细

python之反射

时间:2017-07-26 01:39:23      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:tar   targe   执行函数   split   函数名   返回结果   lis   print   返回   

1.定义:以字符串的形式去对象(模块)中操作其成员(方法  变量 等)

inp=input(请输入模块名:)
#以字符串的形式导入模块
DD=__import__(inp,fromlist=True)
re=DD.f1()#f1()是导入的模块的函数
print(re)

s=input(输入函数名称:)
#以字符串的形式去模块中找函数
target_func=getattr(DD,s)
r=target_func()#执行函数
print(r)

#以字符串的形式去某个模块中判断东西是否存在
has_func=hasattr(DD,s)
print(has_func)#存在的话返回结果为True

#以字符串的形式去某个模块中设置东西
set_func=setattr(DD,a,9)
print(DD.a)#得到的结果为9

#以字符串的形式去某个模块中删除东西
del_func=delattr(DD,a)
print(DD.a)#运行报错  AttributeError: ‘module‘ object has no attribute ‘a‘

 

2.基于反射模拟Web框架路由系统(只能用一个模块)

from lib import account #导入模块
url=input(请输入url:).split(/)[-1]

if hasattr(account,url):
    target_func=getattr(account,url)
    re=target_func()
    print(re)
else:
    print(404)

3.基于反射模拟Web框架路由系统(任意模块

#规定用户输入格式  模块名/函数名
url=input("请输入url:")
target_model,target_func=url.split(/)
m=lib.+target_model#导入的模块在lib文件中
#导入模块
model=__import__(m,fromlist=True)
#判断函数是否在导入的模块中
if hasattr(model,target_func):
    re=getattr(model,target_func)
    r=re()
    print(r)
else:
    print(404)

 

python之反射

标签:tar   targe   执行函数   split   函数名   返回结果   lis   print   返回   

原文地址:http://www.cnblogs.com/wangbinbin/p/7237131.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!