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'>
    
  • 相关阅读:
    第3次实践作业
    第2次实践作业
    第09组 团队Git现场编程实战
    第二次结对编程作业
    团队项目-需求分析报告
    团队项目-选题报告
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    课程设计第十四天
  • 原文地址:https://www.cnblogs.com/infuture/p/13352850.html
Copyright © 2011-2022 走看看