首页 > 编程语言 > 详细

python 单例装饰器

时间:2019-10-08 10:25:50      阅读:95      评论:0      收藏:0      [点我收藏+]

Python中单例模式的实现方法有多种,但在这些方法中属装饰器版本用的广,因为装饰器是基于面向切面编程思想来实现的,具有很高的解耦性和灵活性。

单例模式定义:具有该模式的类只能生成一个实例对象。

 

def singlecls(cls, *args,**kwargs):

  instace = {}

  def get_instance(cls, *args, **kwargs):

    if cls not in instace:

      instances[cls] = cls(*args, **kwargs)

    return instance[cls]

  return get_instace

    

 

@singlecls

class A(object):

  def __init__(self):

    pass

 

A = singlecls(A)

在创建实例对象时会先将 A 作为参数传入到 singlecls 函数中,函数在执行过程中不会执行 get_instance 函数(函数只有调用才会执行),直接返回get_instance函数名。

此时可以看作 A = get_instance,创建实例时相当于 a= get_instance(),调用get_instance 函数,先判断实例是否在字典中,如果在直接从字典中获取并返回,

如果不在执行 instances [cls] = A(),然后返回该实例对象并赋值非a变量,即a = instances[cls]。

 

python 单例装饰器

原文:https://www.cnblogs.com/hanwenlin/p/11633930.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!