Python单例模式

来源:互联网 发布:张家港网络ankin 编辑:程序博客网 时间:2024/05/28 16:13

工厂方法

class Class3(object):    def __init__(self):        self.id = 0    @staticmethod    def instance(*args, **kwargs):        if not hasattr(Class3, "_instance"):            Class3._instance = Class3(*args, **kwargs)        return Class3._instancec1 = Class3.instance()c2 = Class3.instance()print(id(c1), c1.id)c1.id = 1000print(id(c2), c2.id)#===============(140619211572304, 0)(140619211572304, 1000)

metaclass 元类

class singleton(type):    def __init__(cls, name, bases, dict):        super(singleton, cls).__init__(name, bases, dict)    def __call__(cls, *args, **kwargs):        if not hasattr(cls, "_instance"):            cls._instance = super(singleton, cls).__call__(*args, **kwargs)        return cls._instanceclass Class4(object):    __metaclass__ = singleton    def __init__(self):        self.id = 0c1 = Class4()c2 = Class4()print(id(c1), c1.id)c1.id = 1000print(id(c2), c2.id)#=============(139687817574160, 0)(139687817574160, 1000)
0 0
原创粉丝点击