反射
反射是编程语言中的一种高级操作方式,是在程序运行过程中,动态的从内存中获取执行状态,根据执行状态动态调用执行栈,完成具体功能的操作!
反射为了进行代码的黑盒调试,通过字符串描述反射得到对象的属性或者方法,完成目属性的获取或者方法的调用。
反射为了容错开发,不确定目标对象是否已经完善了对应的函数/方法,直接调用执行并且保证程序不能出错。
反射的方法
案例:反射机制下的容错开发
"""
反射机制下的容错开发
"""
class Service: # 开发A
"""业务类型"""
@staticmethod
def login():
input("用户登录了, 按任意键继续..")
class Views: # 开发B
"""视图"""
@staticmethod
def show_login():
res = input("输入1开始登录")
if res == "1":
# 多人协同下,下面的传统代码已经不满足开发需求!
# return Service.login()
# 反射容错开发:判断目标对象中是否包含 login()属性
if hasattr(Service, "login"):
# 如果包含[已经开发完成了],获取login()
login = getattr(Service, "login")
# 执行登录
return login()
input("选项非法,重新登录")
return Views.show_login()
Views.show_login()