zoukankan      html  css  js  c++  java
  • 十一,装饰器详解

    1. 什么是装饰器
    器:指的是具备某一功能的工具
    装饰:指的是为被装饰器对象添加新功能

    装饰器就是用来为被装饰器对象添加新功能的工具
    注意:装饰器本身可以是任意可调用对象,被装饰器的对象也可以是任意可调用对象


    2. 为何要用装饰器
    开放封闭原则:封闭指的是对修改封闭,对扩展开放

    装饰器的实现必须遵循两大原则:
    1. 不修改被装饰对象的源代码
    2. 不修改被装饰器对象的调用方式

    装饰器的目标:就是在遵循1和2原则的前提下为被装饰对象添加上新功能

    3. 怎么用装饰器

    装饰器模板:

    def outter(func): # func=最原始那个函数的内存地址
      def wrapper(*args,**kwargs):
        code.....
        return func(*args,**kwargs) #最原始的那个index的内存地址()
        code....
      return wrapper

    语法糖:

    @outter

    def index():
      print('welcome to index page')

    叠加多个装饰器:

      解释@语法的时候是自下而上运行
      而执行装饰器内的那个wrapper函数时的是自上而下

    有参装饰器:

     在装饰器外再套一层有形参的装饰器

     def auth(x,y,z):

      def outter(func): # func=最原始那个函数的内存地址
        def wrapper(*args,**kwargs):
          code.....
          return func(*args,**kwargs) #最原始的那个index的内存地址()
          code....
      return wrapper

     return outter

    装饰器内可以使用传入的参数

  • 相关阅读:
    赋值问题
    构造方法的作用
    this的使用
    三目运算符和形参的使用
    构造方法作用:给所有对象进行相同的初始化操作
    成员变量和局部变量
    相关开发的书籍名汇集
    html ---- web sql 例子
    让input表单输入框不记录输入过信息的方法
    css实现两端对齐的3种方法
  • 原文地址:https://www.cnblogs.com/TRKOTW/p/9544729.html
Copyright © 2011-2022 走看看