本文實例講述了Python使用metaclass實現(xiàn)Singleton模式的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:
class Singleton(type): def __call__(cls, *args, **kwargs): print "Singleton call" if not hasattr(cls, 'instance'): cls.instance = super(Singleton, cls).__call__(*args, **kwargs) return cls.instance def __new__(cls, name, bases, dct): print "Singleton new" return type.__new__(cls, name, bases, dct) def __init__(cls, name, bases, dct): print "Singleton init" super(Singleton, cls).__init__(name, bases, dct)class Cache(object): __metaclass__ = Singleton def __new__(cls, *args, **kwargs): print "Cache new" return object.__new__(cls, *args, **kwargs) def __init__(cls, *args, **kwargs): print "Cache init" def __call__(cls, *args, **kwargs): print "Cache call"print Cache()print Cache()
輸出:
Singleton newSingleton initSingleton callCache newCache init<__main__.Cache object at 0x01CDB130>Singleton call<__main__.Cache object at 0x01CDB130>
希望本文所述對大家的Python程序設計有所幫助。
新聞熱點
疑難解答