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

  

posted @ 2016-06-02 21:07  青春永不言弃  阅读(102)  评论(0)    收藏  举报