这是一种写单例的简单方法:
class Singleton(object): __instance = None def __new__(cls): if cls.__instance is None: cls.__instance = super(Singleton,cls).__new__(cls) cls.__instance.__initialized = False return cls.__instance def __init__(self): if(self.__initialized): return self.__initialized = True print ("INIT")a = Singleton()b = Singleton()print (a is b)
尽管可能有更好的方法。我必须承认,我从不喜欢单例。我更喜欢工厂类型的方法:
class Foo(object): passdef foo_singleton_factory(_singlton = Foo()): return _singletona = foo_singleton_factory()b = foo_singleton_factory()print (a is b)
这样做的好处是,如果需要,可以继续获取Foo的相同实例,但是如果您决定在未来10年内不想使用真正的单例,则不限于单个实例。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)