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

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

日期: 二月 14, 2023, 午夜
栏目: python基础教程
阅读: 487
作者: 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方法我们可以给函数在执行前就进行一定的数据处理。

部分文字内容为【Python自学网】原创作品,转载请注明出处!视频内容已申请版权,切勿转载!
回顶部