码迷,mamicode.com
首页 > 编程语言 > 详细

python+单例模式

时间:2018-11-20 01:17:07      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:init   val   object   test   一个   实现   self   ==   rgs   

单例模式: 顾名思义,一个类,在整个项目的运行周期内只有一个实例

def singleton(cls,*args,**kwargs):
instance = {}
def _singleton():
if cls not in instance:
instance[cls] = cls(*args,**kwargs)
return instance[cls]
return _singleton

@singleton

class test_singleton(object):
def __init__(self):
self.sum = 0
def add(self):
self.num = 100

cls1 = test_singleton()
cls2 = test_singleton()
print(id(cls1)==id(cls2))

利用__new__实现单例子
class A(object):
__instance = None

def __new__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = object.__new__(cls,*args,**kwargs)
return cls.__instance

def __init__(self):
self.value = 3
a = A()
a.value = 2
print(a.value)
b = A()
print(a is b)
print(a.value)
print(b.value)

python+单例模式

标签:init   val   object   test   一个   实现   self   ==   rgs   

原文地址:https://www.cnblogs.com/djongsir/p/9986752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!