单例python调用两次__init__的问题

单例python调用两次__init__的问题,第1张

单例python调用两次__init__的问题

这是一种写单例的简单方法

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年内不想使用真正的单例,则不限于单个实例。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5666797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存