Python基础28-面向对象(系统内置方法8-装饰器)

2018-05-24  本文已影响63人  Jacob_LJ

Python基础-面向对象(方法)

8 装饰器

1 装饰器(函数式实现)

2 通过类方式,实现装饰器

def check(func):
    print("增加功能")
    def inner():
        print("登录验证操作....")
        func()
    return inner

@check
def fss():
    print("发说说")

fss()

>>>> 打印结果

增加功能
登录验证操作....
发说说
def check(func):
    print("增加功能")
    def inner():
        print("登录验证操作....")
        func()
    return inner

# @check
def fss():
    print("发说说")

fss = check(fss) # 使用@check 方式实际上就是使用`fss = check(fss)`

fss()

>>>> 打印结果

增加功能
登录验证操作....
发说说
class check:

    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        print("增加功能")
        print("登录验证操作....")
        self.func()

def fss():
    print("发说说")

fss = check(fss)

fss()

>>>> 打印结果

增加功能
登录验证操作....
发说说
class check:

    def __init__(self, func):
        self.func = func

    def __call__(self, *args, **kwargs):
        print("增加功能")
        print("登录验证操作....")
        self.func()


@check
def fss():
    print("发说说")

fss()

>>>> 打印结果

增加功能
登录验证操作....
发说说

问题:

  1. 回顾装饰器的概念及通过闭包及返回函数方式的实现
  2. 代码练习:通过类形式实现装饰器
上一篇 下一篇

猜你喜欢

热点阅读