class Singleton(object): def __new__(cls,*args,**kwargs): if not hasattr(cls,'_instance'): orig=super(Singleton,cls) cls._instance=orig.__new__(cls) return cls._instance class MyClass(Singleton): def __init__(self,name): self.name=name a=MyClass('a') b=MyClass('b') print a.name, b.name ##b b
# ########### 单例类定义 ########### class Foo(object): __instance = None @staticmethod def singleton(): if Foo.__instance: return Foo.__instance else: Foo.__instance = Foo() return Foo.__instance # ########### 获取实例 ########### obj = Foo.singleton() 对于Python单例模式,创建对象时不能再直接使用:obj = Foo(),而应该调用特殊的方法:obj = Foo.singleton() 。