`

python装饰器之类内部成员装饰

 
阅读更多
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~

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics