Python笔记-类装饰器

使用类装饰器还可以依靠类内部的__call__方法,但使用@形式将装饰器附加到函数上时,就会调用此方法。

如下代码:

class Foo(object):
    def __init__(self, func):
        self._func = func

    def __call__(self, *args, **kwargs):
        print("class decorator running")
        self._func()
        print("class decorator ending")

    def bar():
        print("i am bar")

@Foo
def bar():
    print("I am bar")

@Foo
def HelloWorld():
    print("Hello World")

if __name__ == "__main__":
    bar()
    HelloWorld()

运行截图如下:

类装饰器在使用时,没有函数装饰器用得多。

发布了1269 篇原创文章 · 获赞 1970 · 访问量 179万+

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/104508871
今日推荐