单例模式共享属性

通过共享属性达到单例模式

# coding=utf8

class Borg(object):
    _state = {}
    def __new__(cls, *args, **kw):
        ob = super(Borg, cls).__new__(cls, *args, **kw)
        ob.__dict__ = cls._state
        return ob

    def __init__(self,x):
        self.x = x




b1 = Borg(1)
b2 = Borg(2)

print b1.x
print b2.x

print id(b1)
print id(b2)

结果是

可以看到共享属性方式的单例模式,与前两篇的不一样,实例化多少次就有多少个对象产生,但每个对象的状态,也就是所有实例的属性都是保持一致的。

原文地址:https://www.cnblogs.com/ydf0509/p/8311076.html