Python uses metaclass to implement the Singleton mode, metaclasssingleton
This example describes how Python uses metaclass to implement the Singleton mode. Share it with you for your reference. The specific implementation method is as follows:
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()
Output:
Singleton newSingleton initSingleton callCache newCache init<__main__.Cache object at 0x01CDB130>Singleton call<__main__.Cache object at 0x01CDB130>
I hope this article will help you with Python programming.