美文网首页
Python之路,装饰器模式模拟页面登录

Python之路,装饰器模式模拟页面登录

作者: Flash_6857 | 来源:发表于2018-03-11 13:01 被阅读0次

最近看了下Python,的确是一种语义简洁,且特别适合快速开发的语言,学习了这个语言的装饰器模式,想记录下自己的一点点感想:

虚拟业务场景: 假设有三个页面:home,finance,book三个函数,分别使用京东帐号,微信帐号,和普通帐号登录,现在三个页面已经正式上线使用,要求不修改调用代码的情况下,使用装饰器模式来为三个函数添加登录验证:

具体的代码块如下:

#__author: "hong liu"

#date: 2018-03-08

import json

login_status =False

# 把验证信息组装为字典

def analy_file(properties):

user_info = {}

if type(properties) ==list:

for linein properties:

if '=' in line:

platform,user_json = line.split('=')

platform = platform.strip()

user_json = json.loads(user_json.strip())

user_info[platform] = user_json

return user_info

# 通过装饰器模式来实现不修改工程代码的情况下添加登录验证

def auth(auth_type =''):

def login(func):

def inner(user_info):

if login_status ==False:

if auth_type =='jingdong':#验证类型为京东帐号

                    user_name =input('jingdong username:')

pass_word =input('jingdong password:')

if user_info['jingdong']['user_name'] == user_nameand user_info['jingdong']['pass_word'] == pass_word:

func()

else:

print('login jingdong fail')

if auth_type =='weixin':#验证类型为微信帐号

                    user_name =input('weixin username:')

pass_word =input('weixin password:')

if user_info['weixin']['user_name'] == user_nameand user_info['weixin']['pass_word'] == pass_word:

func()

else:

print('login weixin fail')

if auth_type =='':#普通帐号验证

                    user_name =input('username:')

pass_word =input('password:')

if user_info['customer']['user_name'] == user_nameand user_info['customer']['pass_word'] == pass_word:

func()

else:

print('login fail')

return inner

return login

#主页面,使用京东帐号登录

@auth(auth_type ='jingdong')

def home():

print('welcome to home page')

#财务专栏,使用微信帐号登录

@auth(auth_type ='weixin')

def finance():

print('welcome to finance page')

#书本页面,使用普通帐号登录

@auth(auth_type ='')

def book():

print('welcome to book page')

file_info = []

# 从文件中读取用户登录验证信息

with open('./user_info.txt','r',encoding='UTF-8')as f:

for linein f:

file_info.append(line.strip('\n'))

user_info = analy_file(file_info)

home(user_info) #最后调用home(user_info)会发现需要验证了

相关文章

  • Python之路,装饰器模式模拟页面登录

    最近看了下Python,的确是一种语义简洁,且特别适合快速开发的语言,学习了这个语言的装饰器模式,想记录下自己的一...

  • 设计模式03装饰者模式

    python对装饰器支持的非常好, 但是常见的python装饰器并不代表整个装饰者模式,它只是装饰者模式的一种实现...

  • 通过模块功能实现单例模式

    一般说到python实现单例模式,都会想到各种装饰器的途径来构造 装饰器途径构造单例模式参考文档:python装饰...

  • 利用Python装饰器来组织Tensorflow代码的结构

    装饰器 定义Python装饰器 装饰器是一种设计模式, 可以使用OOP中的继承和组合实现, 而Python还直接从...

  • Python装饰器模式

    标签: python|设计模式|装饰器模式 引子 对于装饰器模式我正在一点一点的理解........使用对象组合的...

  • 11.装饰器(注解)、深浅拷贝

    一、装饰器 1). 装饰器概述 装饰器:Python中的代理模式的实现。 对其他函数进行增强。 原则:不修改被修饰...

  • 2020-12-12

    python-selenium模拟登录实现模拟登录 (https://toefl.neea.cn/login),解...

  • Python装饰器模式

    Decorator ==装饰器模式==提供在不破坏函数内部结构的前提下动态添加代码的功能。 举个栗子,想要知道一个...

  • Python装饰器函数和C# 装饰器设计模式对比

    工作需要使用学习Python, 发现Python装饰器很神奇,所以把以前做游戏用到的c#的装饰器模式捡起来对比了下...

  • 装饰器模式

    介绍 在python装饰器学习 这篇文章中,介绍了python 中的装饰器,python内置了对装饰器的支持。面向...

网友评论

      本文标题:Python之路,装饰器模式模拟页面登录

      本文链接:https://www.haomeiwen.com/subject/gctwfftx.html