一、實例方法,類方法,靜態(tài)方法
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的介休網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
我們首先寫一個類,里面包含這三種方法。
可以看到,我們用到了兩個裝飾器。
我們用類和實例分別調(diào)用下類方法
我們用類和實例分別調(diào)用下靜態(tài)方法
靜態(tài)方法其實就是把一個普通的函數(shù)寫在類里,與直接在外層寫一個函數(shù)是一樣的,本質(zhì)上是一個函數(shù)。
為了方便理解,我們分別打印下這些方法的類型
通過type()查看對象是方法還是函數(shù)
此外,還可以通過inspect模塊判斷某個對象是否是某種類型,返回布爾值。
用法
小Tips:概念理解
直接def定義的,我們叫做函數(shù)
把函數(shù)放到類里,我們叫做方法
方法可以通過裝飾器staticmethod轉(zhuǎn)為(放在方法里的)函數(shù)
繼承
一個類繼承另一個類時,會自動獲得另一個類的所有屬性和方法,被繼承的類稱之為父類,新類稱為子類。子類擁有父類所有的屬性和方法,并且可以定義自己的屬性和方法
我們以上邊的Rectangle類為父類來試一下
1)完全繼承
可以看到,子類完全繼承父類后,可以直接調(diào)用父類的所有方法。
2)部分繼承
部分繼承:繼承父類后,修改父類的同名方法
我們試一下,Square繼承Rectangle后,修改__init__()方法
3)拓展父類的方法
在保留父類中某個方法的代碼同時,對方法進(jìn)行拓展
可以在方法中加入"super().方法名"來實現(xiàn)
4)@property
Python雖然是解釋型語言,但從設(shè)計之初就已經(jīng)是一門面向?qū)ο蟮恼Z言,對于Python來說一切皆為對象。正因為如此,在Python中創(chuàng)建一個類和對象是很容易的,當(dāng)然如果習(xí)慣面向過程或者函數(shù)的寫法也是可以的,Python并不做硬性的限制。
Python的面向?qū)ο筇卣魅缦拢?/p>
封裝
面向?qū)ο蟪绦蛟O(shè)計中的術(shù)語對象(Object)基本上可以看做數(shù)據(jù)(特性)以及由一系列可以存取、操作這些數(shù)據(jù)的方法所組成的集合。傳統(tǒng)意義上的“程序=數(shù)據(jù)結(jié)構(gòu)+算法”被封裝”掩蓋“并簡化為“程序=對象+消息”。對象是類的實例,類的抽象則需要經(jīng)過封裝。封裝可以讓調(diào)用者不用關(guān)心對象是如何構(gòu)建的而直接進(jìn)行使用。
繼承
類繼承:
繼承給人的直接感覺是這是一種復(fù)用代碼的行為。繼承可以理解為它是以普通的類為基礎(chǔ)建立專門的類對象,子類和它繼承的父類是IS-A的關(guān)系。
多重繼承:
不同于C#,Python是支持多重類繼承的(C#可繼承自多個Interface,但最多繼承自一個類)。多重繼承機制有時很好用,但是它容易讓事情變得復(fù)雜。
多態(tài)
多態(tài)意味著可以對不同的對象使用同樣的操作,但它們可能會以多種形態(tài)呈現(xiàn)出結(jié)果。在Python中,任何不知道對象到底是什么類型,但又需要對象做點什么的時候,都會用到多態(tài)。方法是多態(tài)的,運算符也是多態(tài)的。
相關(guān)推薦:《Python教程》以上就是小編分享的關(guān)于python為什么是面向?qū)ο蟮牡脑敿?xì)內(nèi)容希望對大家有所幫助,更多有關(guān)python教程請關(guān)注環(huán)球青藤其它相關(guān)文章!
Python既支持面向過程的編程也支持面向?qū)ο蟮木幊?。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數(shù)構(gòu)建起來的。在“面向?qū)ο蟆钡恼Z言中,程序是由數(shù)據(jù)和功能組合而成的對象構(gòu)建起來的。比如說C主要面向過程,而JAVA主要面向?qū)ο蟆?/p>
python面向?qū)ο蟮娜筇卣鞯挠梅ê秃瘮?shù)的用法一樣。面向?qū)ο蟮娜筇匦允侵阜庋b、繼承和多態(tài)。面向?qū)ο缶幊淌且环N編程方式,此編程方式的落地需要使用類和對象來實現(xiàn),所以,面向?qū)ο缶幊唐鋵嵕褪菍︻惡蛯ο蟮氖褂?。類就是一個模板,模板里可以包含多個函數(shù),函數(shù)里實現(xiàn)一些功能對象則是根據(jù)模板創(chuàng)建的實例,通過實例對象可以執(zhí)行類中的函數(shù)。
計算機剛出現(xiàn)不久,產(chǎn)生了一種常見的編程范式是面向過程,其構(gòu)造類似于做菜的配方,因為它以函數(shù)和代碼塊的形式提供一組步驟,這些步驟順序地流動以完成任務(wù)。用面向過程的語言開發(fā)一款銀行軟件系統(tǒng)的取款模塊,設(shè)計思路是基于取款這個過程的。首先,插入銀行卡、輸入密碼、ATM驗證賬號和密碼。其次,輸入取款金額、ATM驗證余額、ATM驗證賬號和密碼。最后ATM吐出鈔票。面向過程的軟件開發(fā)就是圍繞這些步驟來設(shè)計的。
然而,面向過程的代碼在代碼規(guī)模變大時會難以理解和維護,不利于修改和擴充(增加新功能),也不利于代碼的重用。因此軟件開發(fā)發(fā)展形成了面向?qū)ο蟮姆治鲈O(shè)計。
同樣是銀行軟件系統(tǒng)的取款模塊,面向?qū)ο笫菄@取款操作中有哪些參與者來設(shè)計軟件的。參與者包括:銀行卡,客戶和ATM機。銀行卡包含賬號和密碼。插入銀行卡、輸入密碼和輸入取款金額都是客戶的動作。驗證賬號和密碼、驗證余額以及吐出鈔票都是ATM的行為。圍繞對象來設(shè)計軟件時。首先以姓名為參數(shù)實例化用戶類創(chuàng)建一個用戶對象。然后以用戶、卡號、密碼為參數(shù),實例化銀行卡類創(chuàng)建一個銀行卡對象。然后以銀行卡對象為參數(shù)實例化ATM類創(chuàng)建一個ATM機對象。然后調(diào)用驗證用戶名密碼方法和吐鈔票方法,完成取鈔功能。當(dāng)修改驗證密碼的代碼時,比如改為人臉驗證,其它地方是不受影響的。這就是面向?qū)ο箝_發(fā)的一個重大的好處。
總結(jié)來說,面向?qū)ο笏窃诿嫦蜻^程滿足不了軟件發(fā)展需求的背景下出現(xiàn)的。它更符合人類的思考方式。所以面向?qū)ο蟮膬?yōu)勢非常明顯,具體表現(xiàn)在四個方面:
①可維護性好。
②可擴展性好,系統(tǒng)里新加一個模塊,代碼的影響能降到最低。
③可重用性好,別的系統(tǒng)可以非常方便的重用這個系統(tǒng)里某個模塊的代碼,幾乎不用更改。
④和面向過程相比,面向?qū)ο箝_發(fā)效率更高。
知道了面向?qū)ο蟮膬?yōu)勢,下面引入面向?qū)ο蟮亩x。面向是以……為導(dǎo)向的,以……為目標(biāo)的意思。對象是物體、目標(biāo)、客體和對象的意思。因此面向?qū)ο蟮亩x是:以對象為導(dǎo)向,圍繞對象來開發(fā)應(yīng)用程序的軟件開發(fā)方法。
關(guān)于Python的基礎(chǔ)問題可以看下這個網(wǎng)頁的視頻教程,網(wǎng)頁鏈接,希望我的回答能幫到你。
本文名稱:面向?qū)ο蠛瘮?shù)python 面向?qū)ο蠛瘮?shù)調(diào)用
文章URL:http://jinyejixie.com/article18/dodppdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、定制網(wǎng)站、用戶體驗、網(wǎng)頁設(shè)計公司、自適應(yīng)網(wǎng)站、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)