反射的作用:通过字符串去匹配对象中的成员(成员一般指模块中的函数)。
例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()
时间: 2024-10-10 10:35:49