python進階之魔術方法詳解

一、三個內置函數

1、@classmethod–類名.屬性名

2、@staticmethod–類名.屬性名

3、@property–設置隻讀屬性,方法變屬性,別人不易篡改,調用:類名(). 屬性名

二、雙下劃線開頭和結尾的方法,叫魔術方法。

1、一個類對象,在__init__初始化之前,還有__new__方法,這裡要重寫__new__方法,要調用父類的new方法,且將new方法創建的對象返回,即object. new(cls),其中cls代表的是類對象本身(MyClass)。否則無返回值運行報錯。

在這裡插入圖片描述

2、單例模式

這個__new__方法的應用之一,就是單例模式。

實現思路,藍色線一個回路。黃色線一個回路。

在這裡插入圖片描述

具體腳本如下。t2實例對象,沒有name屬性,但是也神奇的輸出與t1一致的結果。如此類推,其他也一樣,如果把這個. py文件導入其他文件B. py中,在B. py中創建其他實例對象t3,調用這個name屬性時就會輸出與t1一樣的結果。其次,t1、t2、t3的內存地址即id(t1)三個都是一樣的。最後,還可以設置其他屬性,且之間屬性共用。

這個就是單例模式,即實例化一次。(如果多次實例化,設置屬性,明顯會浪費資源,所以單例模式誕生瞭。)

在這裡插入圖片描述

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: