python反射
|
python反射
|
python反射
反射的简单含义:
通过类名获得类的实例对象
通过方法名得到方法,实现调用
更具字符串的形式去对象(摸个模块)中操作其它成员
# getattr()#语法#getattr(object(模块), name(函数名,或变量名), default=None)
# hasattr##语法hasattr(*args, **kwargs):#判断有没有这个东西
# setattr###语法setattr(x, y, v)###修改
# delattr###语法delattr(x, y):###删除东西
导入模块的几种方式
传入模块的几种方式 1,import 模块名 2,from xxx import 模块名 3,__import__(文件名,'函数')##以字符串的方式导入
实例
from lib import login
rat = login.login()
print(rat)
url = input('请用户输入url') ###用户输入模块名
if url.endswith('login'): ###匹配如要是字符串login结尾
r = login.login() ###执行这个函数
print(r) ###打印他的结果
elif url.endswith('loggin'): ###如果要是loggin结尾
r = login.loggin() ###执行loggin函数
print(r) ###在打印出来
else:
print('404') ###都不是则是404
from lib import login ##导入模块
url = input('请用户输入:') ##等待用户输入
inp = url.split('/')[-1] ###输入的东西以/分割,找后面的
if hasattr(login,inp): ###发射这个模块中有没有这个值
rat=getattr(login,inp) ###以字符串的方式找到函数名
print(rat()) ###执行这个函数
else:
print('404') ###否则404
url = input('请输入url') ###等待用户输入url
mk, hs = url.split('/') ####以下划线分割,用两个值接收
print(mk, hs)
m = __import__('lib.'+mk,fromlist=True) ##以字符串的形式导入模块
if hasattr(m, hs): ##查看这个模块里有没有这个函数
rat = getattr(m, hs) ###以字符串的方式找到这个函数
r=rat() ###在执行这个函数
print(r) ###打印出来
else:
print('404') ###否则404

浙公网安备 33010602011771号