单例模式:就是永远用一个对象的实例
初级版
#初级版 class Foo(object): instance=None def __init__(self): pass @classmethod # 类方法 类方法只能访问类变量,不能访问实例变量 def get_instance(self): if Foo.instance: return Foo.instance else: Foo.instance = Foo() return Foo.instance obj1=Foo.get_instance() obj2=Foo.get_instance() print(id(obj1),id(obj2))
高级版
#高级版 class Foo(object): instance =None def __init__(self): pass def __new__(cls, *args, **kwargs): if Foo.instance: return Foo.instance else: Foo.instance = object.__new__(cls,*args,**kwargs) return Foo.instance obj1=Foo() obj2=Foo() print(id(obj1),id(obj2))