zoukankan      html  css  js  c++  java
  • 装饰器常用形态(结合装饰器起飞版来看)

    在inner()函数中:                                                                                       #  结合装饰器起飞版来看

    1.inner()函数中,在被装饰函数之前添加新功能(执行)                             如 用户登录

    2.inner()函数中,在被装饰函数之后添加新功能(执行)                             如 关闭浏览器,断开数据库连接

    3.被装饰函数的前后都添加新功能(执行)                                                       如 用于统计被装饰函数的花费时间

    4.inner()函数中,未添加任何新的功能,直接引用原函数,就相当于空装饰器,

        调用被空装器装饰的函数就是调用原函数自己     如:登录装饰器,避免重复登录  (例题待更新

    例题:用户登录装饰器  执行使用其它功能前必须先登录 

    def  login(func):
        # 2、启动购物程序前,必须要先登录  def login   读文件 做对比   装饰器
        def inner():
            if not islogin:
                uname = input('请输入登录名:').strip()
                pword = input('请输入密码:').strip()
                with open('a.txt','r',encoding='utf-8') as f2:
                    for line in f2:     #这里存入json 文件比较好判断
                        line = line.strip('
    ')   # line = ['seen','123456']
                        line = line.split('|')
                        if uname == line[0] and pword == line[1]:
                            print('登录成功')
                            return func()         #结束当前函数体
                    else:
                        print('你输入的用户名或密码不正确')
            else:
                func()                 #如果登录成功则执行返回空装饰器,被装饰的函数执行函数本身
        return inner
  • 相关阅读:
    Struts2拦截器的底层实现(AOP思想)
    JFreeChart的使用
    struts2与servlet的耦合
    谷歌地图:使用多边形自动形成类PolygonCreator
    struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别
    Struts2的声明式异常处理
    Java synchronized 详解
    [转载]C# 编写SQL SERVER 2005 的存储过程
    调试基于clr管理的sqlserver存储过程
    sqlserver中调用.net中的dll
  • 原文地址:https://www.cnblogs.com/bigbox/p/11854467.html
Copyright © 2011-2022 走看看