1. 描述
把类做成装饰器,暂时没感觉到有什么用。函数全部在@时就已经执行完了,main函数中调用函数显示未定义,只能打印@时函数执行完的结果
2. 代码
# -*- coding: utf-8 -*-
class First(object):
print(' First begin...')
def __init__(self, num, name):
print('init begin...')
self.num = num
self.name = name
print('num = %s' % num)
print('init end...')
def __call__(self, fun, *args, **kwargs):
print('call begin...')
print('num = %s' % self.num)
self.fun = fun
print('func = %s' % self.fun)
print('name = %s' % self.name)
print('call end...')
print('return self.fun')
return self.fun(self.name)
@First(100, 'tom')
def my_func(name):
print('my_func define...')
print('my_func name = %s' % name)
print('my_func end...')
return 'hello world'
if __name__ == '__main__':
print('main begin...')
print('my_func = %s' % my_func)
print('main end...')
3. 输出
First begin...
init begin...
num = 100
init end...
call begin...
num = 100
func = <function my_func at 0x0000017FA78B8E18>
name = tom
call end...
return self.fun
my_func define...
my_func name = tom
my_func end...
main begin...
my_func = hello world
main end...
Process finished with exit code 0