Python3笔记042 - 7.8 装饰器

第7章 面向对象程序设计

  • 7.1 面向对象概述
  • 7.2 类的定义
  • 7.3 类的实例化
  • 7.4 访问限制
  • 7.5 继承
  • 7.6 封装
  • 7.7 多态
  • 7.8 装饰器
  • 7.9 特殊方法

7.8 装饰器

Python的类装饰器:

# 典型场景:进行业务操作前需要先登录成功
def login(cls):
    print("登录成功")
    return cls


@login
class Model(object):
    def __init__(self):
        print("model has created")


if __name__ == '__main__':
    model = Model()

login即是装饰器函数,输入的cls是一个类,返回也是一个类。所以其实上文的类装饰器就相当于:Model = login(Model)

继承

'''
对于继承关系,若f装饰了类A,类B继承了A,则产生B的对象时仍然会调用装饰器f,但装饰器f只会修饰类A。
'''
def decorator(num):
    print(num)

    def dec2(cls):
        print(cls)
        return cls

    return dec2


def decorator2(cls):
    print(cls)
    return cls


@decorator(1)
class Model(object):
    test_val = 0

    def __init__(self):
        pass


@decorator2
class SubModel(Model):
    def __init__(self):
        pass


if __name__ == '__main__':
    model = SubModel()
output:
1
<class '__main__.Model'>
<class '__main__.SubModel'>
posted @ 2020-07-26 11:34  测试工匠麻辣烫  阅读(89)  评论(0编辑  收藏  举报