設計模式 (python) ---> Singleton

來源:互聯網
上載者:User

標籤:設計模式   python   

代碼:

class Singleton(object): 
_inst = None
def new(cls):
if cls._inst is None:
inst = object.new(cls)
inst.init()
cls._inst = inst
return cls._inst
def init(self):
pass

解析:1、__new__ 來自於object類,當類中同時定義了__new__和__init__時,先調用__new__建立對象

2、__new__函數的參數與__init__不同,__new__的參數為cls:表示需要執行個體化的類,在這裡就是指Singleton;__init__的參數為self,表示的類的執行個體

3、__new__傳回值,一般都返回類的執行個體;__init__不傳回值

4、可以使用super調用new:super(currentClass,cls).__new__(cls),其中super(currentClass,cls)建立了父類執行個體

5、在__new__的判斷類變數_inst是否為空白,不為空白則利用object.__new__(cls)建立一個執行個體,返回,否則直接返回。

設計模式 (python) ---> Singleton

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.