首页 > 代码库 > 反射的使用

反射的使用

反射的作用:通过字符串去匹配对象中的成员(成员一般指模块中的函数)。

例1:

 1 py1.py
 2 def login():
 3     print("登录")
 4 def logout():
 5     print("退出")
 6 def manager():
 7     print("管理")
 8 
 9 
10 在py2.py中调用py1.py
11 import py1
12 def run():
13     choice=input("输出你的选择:")   #通过不同的输入请求,来调用不同模块
14     if choice=="login":
15         py1.login()
16     elif choice=="logout":
17         py1.logout()
18     elif choice=="manager":
19         py1.manager()
20     else:
21         print(404)
22 if __name__ == "__main__":
23     run()import py1
24 缺点:这要需要重复写很多if elif else
使用反射来改进代码:
py2.py
import py1
def run():
    choice=input("输出你的选择:")
    func=getattr(py1,choice)  #匹配py1模块中的choice函数
    func()
if __name__ == "__main__":
    run()

或者
py2.py
import py1
def run():
    choice=input("输出你的选择:")
    if hasattr(py1,choice):         #判断py1中是否有choice函数,有点话执行
        func=getattr(py1,choice)
        func()
if __name__ == "__main__":
    run()

 

反射的使用