由浅入深,走进Python装饰器-----第二篇:进阶--类装饰函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由浅入深,走进Python装饰器-----第二篇:进阶--类装饰函数相关的知识,希望对你有一定的参考价值。

**类装饰器**  
@类
函数


2.1 用类装饰器来扩展原函数

# 用类装饰器来扩展原函数,  通过对象函数化触发__call__方法,进行返回
class KuoZhan():
    def __call__(self,f):
        return self.newfunc(f)
    def newfunc(self,f):
        def in_newfunc():
            print("1")
            f()
            print("2")
        return in_newfunc

@KuoZhan()        #1.  KuoZhan() ==> obj    2. @obj  ==>  obj( )   3.  func = obj( func)                                                                       
def func():
    print("我是原函数")

func()

>>>1
>>>我是原函数
>>>2

2.2 用类装饰器来扩展原函数

# 直接调用类函数
class KuoZhan():
    def newfunc(f):
        def in_newfunc():
            print("1")
            f()
            print("2")
        return in_newfunc

@KuoZhan.newfunc     # 直接类调用 1. @KuoZhan.newfunc2  ==> KuoZhan.newfunc2()    2. func = KuoZhan.newfunc2(func) = in_newfunc(func)  
def func():
    print("我是原函数")

func()

>>>1
>>>我是原函数
>>>2

2.3 类装饰类里的函数

待续....

以上是关于由浅入深,走进Python装饰器-----第二篇:进阶--类装饰函数的主要内容,如果未能解决你的问题,请参考以下文章

由浅入深,走进Python装饰器-----第一篇:基础

由浅入深,走进Python装饰器-----第五篇:进阶--类装饰类

由浅入深,走进Python装饰器-----第四篇:进阶--函数装饰类

Python初探第二篇-装饰器和迭代器,生成器

Python装饰器由浅入深

python装饰器2:进阶