Python实现方法降级
思路:实现方法降级可以采用代理模式或者装饰者模式,在Python中因为存在装饰器的缘故所以这里采用后者来实现
def fullback(fullback_fun: str):def set_fullback(fun):def execute(*args, **kwargs):try:return fun(*args, **kwargs)except:if len(fullback_fun) > 0:self = args[0]full = getattr(self, fullback_fun)return full(*args[1:], **kwargs)return Nonereturn executereturn set_fullback
用法
class SimpleCollect:@fullback(fullback_fun='method2')def method1(self, args):print('调用方法1')raise Exception('')print(args)return argsdef method2(self, args):print('调用方法2')print(args)return args
- 当方法1调用抛出异常时会自动调用方法2