How Python uses Metaclass to implement singleton patterns

Source: Internet
Author: User

This article illustrates the way Python uses metaclass to implement singleton patterns. Share to everyone for your reference. The implementation methods are as follows:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22-23 Class Singleton (type): Def __call__ (CLS, *args, **kwargs): print "Singleton call" if not hasattr (CLS, ' instance '): Cls.ins tance = Super (Singleton, CLS). __call__ (*args, **kwargs) return cls.instance def __new__ (CLS, name, bases, DCT): print "Sin Gleton new "Return type.__new__ (CLS, name, bases, DCT) def __init__ (CLS, name, bases, DCT): print" Singleton init "super (S Ingleton, 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 ()



1 2 3 4 5 6 7 8 Singleton New Singleton init Singleton call cache new Cache init <__main__. Cache object at 0x01cdb130> Singleton call <__main__. Cache Object at 0x01cdb130>

I hope this article will help you with your Python programming.

Related Article

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.