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~