這篇文章主要介紹“Python中的類到底是什么”,在日常操作中,相信很多人在Python中的類到底是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python中的類到底是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
目前創(chuàng)新互聯(lián)公司已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、宜章網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
今天我們要說的是面向?qū)ο蟮暮诵?----類,類能幫我們把復(fù)雜的事情變得有條理,有順序,希望大家通過學(xué)習(xí)類能改善自己的編碼風(fēng)格,使代碼變得更為好看,更加通俗易懂。
類(class),作為代碼的父親,可以說它包裹了很多有趣的函數(shù)和方法以及變量,下面我們試著簡單創(chuàng)建一個吧。
這樣就算創(chuàng)建了我們的第一個類了。大家可以看到這里面有一個self,其實(shí)它指的就是類aa的實(shí)例。每個類中的函數(shù)只要你不是類函數(shù)或者靜態(tài)函數(shù)你都得加上這個self,當(dāng)然你也可以用其他的代替這個self,只不過這是python中的寫法,就好比Java 中的this。
類一般常用有三種方法,即為static method(靜態(tài)方法),class method(類方法)和self(普通方法)。下面我們來看看他們之間的區(qū)別吧。
從這里可以看出我們的三種方法有一個共同點(diǎn),那就是既可以在實(shí)例中訪問,也可以直接用類訪問。不同的是,類實(shí)例訪問時是不會執(zhí)行init方法的,也就是沒有進(jìn)行初始化。如果用類直接訪問,可以清楚看到它的運(yùn)行軌跡。如果想在一個方法里調(diào)用其他方法則只需:實(shí)例名.方法名 或者 類名.方法名 即可。
安全方法一般是為了保護(hù)類的安全性,為了限制訪問權(quán)限而設(shè)立的。一般只需在方法前加單下劃線即可,那么私有方法怎么訪問呢?和其他方法訪問方法一樣。
安全方法:可以在外部進(jìn)行調(diào)用并且其他方法也能訪問到,它允許本身的任何方法進(jìn)行訪問,并可在外部調(diào)用,安全屬性也是;
私有方法:只能在私有方法內(nèi)部調(diào)用,不能通過類名或者類的實(shí)例名來調(diào)用,所以你可以在其他方法中通過self.ww來調(diào)用或者cls.ww來調(diào)用,這樣就做到了私有的功能。
類的特性,相信接觸過面向?qū)ο蟮男』锇閼?yīng)該都知道,封裝、繼承和多態(tài)。
講的就是將一個功能封裝到類中,這個很好理解。
就是一個類和另一個類的主體結(jié)構(gòu)一致,就好比父親和兒子的區(qū)別,兒子繼承父親所有的特點(diǎn),這使得他可以少做一些重復(fù)勞動,并且他還有自己的一套,這就叫繼承,下面我們通過實(shí)例說明:
可以看出我們實(shí)現(xiàn)了繼承,就是簡單的在子類中添加了父類的名字,并且寫了個spuer,用來繼承父類的所有的特性。雖然父類的所有東西我們都能繼承,但并不是說所有的你都能用的,比如說父類的私有方法或者私有屬性:
那么如果你想要使用它們那該怎么辦呢?很簡單,你只需將私有方法或者屬性添加到父類某個可以公開訪問的類中,然后子類就能使用這些父類定義的私有方法或者屬性了。
當(dāng)然,除了單一繼承,還有多繼承,它可以繼承兩個類的所有屬性和方法,只不過寫法與其他編程語言有點(diǎn)不同,它的多繼承就是遞歸繼承,不能同時繼承,也就是:
這樣就實(shí)現(xiàn)了多繼承,多繼承可以大大簡化代碼量。我們可以通過一些魔法方法來獲得父類的名稱以及說明。
__bases__ #查看類的所有父類 __base__ #查看類的父類 __doc__ #查看類的使用文檔,在類中以三引號擴(kuò)起來的部分都是文檔內(nèi)容
我們注意到,只需繼承一個類就實(shí)現(xiàn)了多繼承,這是因?yàn)閟on類之前繼承過father類,所以現(xiàn)在你必須通過son類繼承father類,后面給它初始化,如果是兩個沒有任何關(guān)聯(lián)的類,則需要寫兩個類名進(jìn)去,并且初始化。
多態(tài)的應(yīng)用使得類更靈活,它可以共享某個方法,給所有的類對象使用。我們來看看:
這里是通過對一個函數(shù)傳一個對象,使得它擁有了類的特征功能,這也就是鴨子類型。
當(dāng)一個類需要大量創(chuàng)建實(shí)例時,可以通過魔法方法slots來聲明。這樣可以減少內(nèi)存消耗。但是它只是動態(tài)的修改,并沒有綁定到類的實(shí)例中,而且類只能訪問slots里設(shè)定的值。
可以看到訪問不了值,因?yàn)闆]有這個屬性,我們再來看看沒slots的時候:
現(xiàn)在正常了,另外,子類的slots為它本身和父類的slots,父類只是本身。這樣極大省內(nèi)存,但是這樣好像還不夠Python,因?yàn)樗木窒扌?,讓我決定使用property。property有兩種創(chuàng)建方式,我們來看看:
直接在方法上運(yùn)用裝飾器,十分方便。他有設(shè)置,獲取,刪除三個屬性,例如:
可以看到,非常簡單就實(shí)現(xiàn)了功能,少寫了很多代碼哦。
使用property函數(shù)來實(shí)現(xiàn):
可以看到,這樣就實(shí)現(xiàn),那么現(xiàn)在我們寫一個稍微復(fù)雜點(diǎn)的,可以進(jìn)行交互的動態(tài)修改屬性吧。
可以看到,我輸入屬性名和屬性值,如果你想做的更好,可以給它加其他功能,比如私有方法私有屬性,訪問其他類??傊δ芏喽啵枰阕约簞邮钟H自實(shí)踐。
通過對類的解讀,讓大家明白了,代碼的簡潔美觀有多重要,為了我們的程序不那么low,請學(xué)好類。
到此,關(guān)于“Python中的類到底是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!