首页 python基础教程 Python面向对象-内置方法__call__()实现装饰器效果
pay pay

Python面向对象-内置方法__call__()实现装饰器效果

日期: 2021年12月7日 15:23
栏目: python基础教程
阅读: 233
作者: python自学网

摘要: 装饰器这个概念在函数中已经讲过,主要通过@语法调用另一个函数给当前函数附加一个功能,面向对象中想实现装饰器这种功能也是一样的,但是我们需要在类的内部实现call方法。

装饰器这个概念在函数中已经讲过,主要通过@语法调用另一个函数给当前函数附加一个功能,面向对象中想实现装饰器这种功能也是一样的,但是我们需要在类的内部实现call方法。

1.函数装饰器

def check(func):
    def test():
        print('身份验证')
        func()
    return test

@check
def load():
    print('登陆成功')

load()

返回结果:

身份验证
登陆成功

2.类装饰器

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

    def __call__(self, *args, **kwargs):  # 想让类像函数一样调用要用call方法
        print('身份验证')
        self.func()

@Check
def load():
    print('登陆成功')

# b = Check(load)
# b()
load()  # 和上面两行同样效果

返回结果:

身份验证
登陆成功

前面的课程介绍过call方法会在对象调用的时候就被提前调用,所以借助于call方法我们可以给函数在执行前就进行一定的数据处理。

目录
回顶部