python - 反射

1.利用反射导入模块

obj = __import__("commons")  #同级目录中的commons.py
obj.login()  #执行commons模块中的login函数

导入多级目录里的模块:

例如:

在admin.py文件中导入lib目录下的commons模块

obj = __import__("lib.commons",fromlist=True)

 

 

2.

commons.py文件内容:

def login():
    print('登录页面')

 

index.py文件内容:

import commons

def run():
    inp = input('输入URL:')
    #利用字符串的形式去对象(模块)中操作(寻找/检查)成员,反射
    # delattr()
    # setattr()
    if hasattr(commons,inp):
        func = getattr(commons,inp)
        func()
    else:
        print('404')

if __name__ == '__main__':
    run()

结果:

 

 

3.反射:伪造web框架的路由系统

commons.py文件内容

def login():
    print('登录页面')

index.py文件内容

def run():
    inp = input('请输入url:')
    m,f = inp.split('/')   #m相当于模块commons名称,f相当于输入commons模块中函数的名称,例如:login()
    obj = __import__(m)
    if hasattr(obj,f):
        func = getattr(obj,f)
        func()
    else:
        print('404')
if __name__ == '__main__':
    run()

运行结果:

 

posted @ 2016-06-11 16:14  unixfbi.com  阅读(223)  评论(0编辑  收藏  举报