class Singleton(object):
def __init__(self):
pass
def __new__(cls, *args, **kw):
if not hasattr(cls, '_instance'):
cls._instance = super(Singleton, cls).__new__(cls, *args, **kw)
return cls._instance
class NewClass(Singleton):
a = 1
NewOne = NewClass()
NewTwo = NewClass()
NewOne.a = 100
print NewTwo.a
100
在__new__方法中会将一个类的实例绑定到类变量_instance上, 如果cls._instance为None说明该类还没有实例化过,实例化该类,并返回。如果cls._instance不为None,直接返回cls._instance。