# decorator_object 1、 初始化时接收 被修饰函数(callbale类), 然后将将要修饰的函数放在类的__call__方法中,
# 这样其自身也成为一个callable_object
class Test(object):
def __init__(self, func):
self.__func = func
self.name = None
def __call__(self, name):
self.name = name
if self._check():
print('欢迎进入!')
self.__func()
else:
print('Have no access')
def _check(self):
if self.name == 'ff':
return True
else:
print('wrong name')
@Test
def test():
print(sum(range(100)))
# 代码运行到第20行, 将Test实例化,test指向此实例对象, 此实例对象的func属性指向原test函数,
# ()运行就执行test指向的实例对象的__call__方法
test('fx')
test('ff')
运行结果:
wrong name
Have no access
欢迎进入!
4950