python進(jìn)階之魔術(shù)方法詳解
一、三個內(nèi)置函數(shù)
1、@classmethod
–類名.屬性名
2、@staticmethod
–類名.屬性名
3、@property
–設(shè)置只讀屬性,方法變屬性,別人不易篡改,調(diào)用:類名(). 屬性名
二、雙下劃線開頭和結(jié)尾的方法,叫魔術(shù)方法。
1、一個類對象,在__init__初始化之前,還有__new__方法,這里要重寫__new__方法,要調(diào)用父類的new方法,且將new方法創(chuàng)建的對象返回,即object. new(cls),其中cls代表的是類對象本身(MyClass)。否則無返回值運行報錯。
2、單例模式
這個__new__方法的應(yīng)用之一,就是單例模式。
實現(xiàn)思路,藍(lán)色線一個回路。黃色線一個回路。
具體腳本如下。t2實例對象,沒有name屬性,但是也神奇的輸出與t1一致的結(jié)果。如此類推,其他也一樣,如果把這個. py文件導(dǎo)入其他文件B. py中,在B. py中創(chuàng)建其他實例對象t3,調(diào)用這個name屬性時就會輸出與t1一樣的結(jié)果。其次,t1、t2、t3的內(nèi)存地址即id(t1)三個都是一樣的。最后,還可以設(shè)置其他屬性,且之間屬性共用。
這個就是單例模式,即實例化一次。(如果多次實例化,設(shè)置屬性,明顯會浪費資源,所以單例模式誕生了。)
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
淺談python中copy和deepcopy中的區(qū)別
Python學(xué)習(xí)過程中會遇到許多問題,最近對copy和deepcopy略感困惑,下面對其進(jìn)行解答,需要的朋友可以參考。2017-10-10Python如何使用Eel和HTML開發(fā)桌面應(yīng)用
這篇文章主要介紹了Python使用Eel和HTML開發(fā)桌面應(yīng)用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01Python開發(fā)工具Pycharm的安裝以及使用步驟總結(jié)
今天給大家?guī)淼氖顷P(guān)于Python開發(fā)工具的安裝以及使用的相關(guān)知識,文章圍繞著如何使用和安裝Pycharm展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06樹莓派使用python-librtmp實現(xiàn)rtmp推流h264的方法
今天小編就為大家分享一篇樹莓派使用python-librtmp實現(xiàn)rtmp推流h264的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07基于selenium及python實現(xiàn)下拉選項定位select
這篇文章主要介紹了基于selenium及python實現(xiàn)下拉選項定位select,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07python逐像素獲取柵格經(jīng)緯度分別保存在兩個矩陣中(代碼收藏)
這篇文章主要介紹了python逐像素獲取柵格經(jīng)緯度分別保存在兩個矩陣中的實現(xiàn)示例,建議收藏代碼總會用到,有需要的朋友可以借鑒參考下,希望能夠有所幫助2024-01-01python3 中文亂碼與默認(rèn)編碼格式設(shè)定方法
今天小編就為大家分享一篇python3 中文亂碼與默認(rèn)編碼格式設(shè)定方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10