zoukankan      html  css  js  c++  java
  • Python3笔记042

    第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'>
    
  • 相关阅读:
    找水王续
    大道至简-阅读笔记01
    第二阶段冲刺(第二天)
    第二阶段冲刺(第一天)
    找小水王
    《大道至简》阅读笔记02——关于项目经理
    学习进度第十二周
    找水王
    学习进度第十一周
    博客园用户体验
  • 原文地址:https://www.cnblogs.com/infuture/p/13352850.html
Copyright © 2011-2022 走看看