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

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

  • 相关阅读:
    react 常用组件整理
    react 问题记录二(侧重于state或者说server层操作)
    web前端常用小函数汇总
    vue 路由跳转四种方式 (带参数) 【转藏】
    微信小程序实用组件:省市区三级联动
    vue table组件显示一个图片

    520
    微信小程序,子页面调用父页面的函数和方法
    webstorm 右侧滚动条怎么设置颜色
  • 原文地址:https://www.cnblogs.com/TRKOTW/p/9544729.html
Copyright © 2011-2022 走看看