python之反射
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之反射相关的知识,希望对你有一定的参考价值。
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之反射的主要内容,如果未能解决你的问题,请参考以下文章