目标:
1:掌握为一个类创建的对象加上括号会发生什么?
2:掌握什么是类装饰器
3:掌握怎么使用类装饰器
一:为一个类创建的对象加上括号会发生什么?
答:为一个类创建的对象加上括号会调用这个类中的 call 方法
图示:
二:什么是类装饰器
答:正常装饰器的扩展体是一个闭包,而类装饰器的扩展体是一个类!
三:怎么使用类装饰器
关键字:@类名 例如 @Test
使用方法:在待扩展函数前面加上@类名 即可实现利用类装饰器装饰函数的功能
实例:
@Tset
def ceshi( ):
Xxx
Xxx
Xxx
注意事项:
1:上面示例的 @Test 等价于 ceshi = Test(ceshi)
2:实例化的对象加上括号就会调用类里面的 call( )方法
3:类装饰器中的类必须包含两种方法,init( ) 与call( ) 方法,而且 init( ) 方法必须接收 待扩展的函数名!并且初始化 例如 self.func = func call( )方法内必须要执行 self.func()才能达到装饰函数的目的
代码演示: