class TestA(object): def __init__(self,name): self.name=name def tryit(func): def _tryit(*args,**xargs): args[0].funcA() try: return func(*args,**xargs) finally:args[0].funcB() return _tryit def funcA(self): print 'hello',self.name def funcB(self): print self.name,'baby~' @tryit def funcC(self,a1,a2): print a1+a2 @tryit def funcD(self,m): print self.name,m if __name__ =='__main__': a=TestA('zhangxiaomeng') a.funcC('EAT...','PLAT.....') a.funcD('SWIM.......')
结果
hello zhangxiaomeng EAT...PLAT..... zhangxiaomeng baby~ hello zhangxiaomeng zhangxiaomeng SWIM....... zhangxiaomeng baby~