def zhuang(F):
print 'in zhuang... F = ', F
def wraper(*args):
F(args)
print 'after zhuang...', wraper
return wraper
@zhuang
def func(*args):
print 'in func...', args
class C:
@zhuang
def func(*args):
print 'in c.func..'
print 'func = ', func
print 'args[0] = ',args[0]
func(1, 3, 4)
cins = C()
cins.func(1,3,6)
print 'Instance = ',cins
---------------------Output-------------------------
in zhuang... F = <function func at 0x012135F0>
after zhuang... <function wraper at 0x01229F70>
in zhuang... F = <function func at 0x0122E030>
after zhuang... <function wraper at 0x0122E070>
in func... ((1, 3, 4),)
in c.func..
func = <function wraper at 0x01229F70>
args[0] = (<__main__.C instance at 0x0122C3A0>, 1, 3, 6)
Instance = <__main__.C instance at 0x0122C3A0>