首页 > 技术文章 > python基础——反射

maxgongzuo 2016-09-05 18:31 原文

反射:利用字符串的形式去对象(模块)中操作(寻找|检查|设置|删除)成员

getattr(commons,"login")    #在commons模块中找成员login
hasattr(commons,"login")    #判断commons模块中是否有login成员
setattr()  #设置
delattr()  #删除

 

自定义模块commons.py

def login():
    print("登陆页面")

def logout():
    print("退出页面")

def home():
    print("主页面")

 

index1.py

输入login,logout,home得到相应页面

import commons
def run():
    inp =  input("请输入要访问的url: \n")
    if hasattr(commons,inp):
        func=getattr(commons,inp)
        func()  #如果inp="login",此时func()执行的就是commons.login()
    else:
        print("404")

if __name__ == '__main__':
    run()

 

index2.py

输入commons/login,commons/logout,commons/home得到相应页面

def run():
    inp =  input("请输入要访问的url: \n")
    m,k=inp.split("/")
    obj = __import__(m) #字符串的形式导入模块
    if hasattr(obj,k):
        func=getattr(obj,k)
        func()
    else:
        print("404")

if __name__ == '__main__':
    run()

 

推荐阅读