1、面向?qū)ο蠛?jiǎn)介
- Python是一門面向?qū)ο蟮木幊陶Z(yǔ)言
- 面向?qū)ο蠛兔嫦蜻^(guò)程
1 面向過(guò)程:
面向過(guò)程是一種以過(guò)程為中心的編程思想。就是分析出解決問(wèn)題所需要的步驟,然后用函數(shù)把這些步驟一個(gè)個(gè)實(shí)現(xiàn),使用的時(shí)候一個(gè)個(gè)依次調(diào)用就行了。
2 面向?qū)ο螅?br> 面向?qū)ο笫窍鄬?duì)于面向過(guò)程來(lái)講的,面向?qū)ο蟮乃枷耄前严嚓P(guān)的數(shù)據(jù)和方法組織成一個(gè)整體來(lái)看待,從更高層次來(lái)進(jìn)行系統(tǒng)建模,更貼近事物的自然運(yùn)行模式。面向?qū)ο蟀褬?gòu)成問(wèn)題的事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描述某個(gè)事物在整個(gè)問(wèn)題解決的步驟中的行為。 -
面向?qū)ο蠛兔嫦蜻^(guò)程的差異性
1 編程思想不同:面向過(guò)程是一種以過(guò)程為中心的編程思想。都是以什么正在發(fā)生為主要目標(biāo)進(jìn)行編程。面向?qū)ο笫且詫?duì)象作為基本程序結(jié)構(gòu)單位編程方式,對(duì)象是程序運(yùn)行時(shí)刻的基本成分。
2 特點(diǎn)不同:面向過(guò)程就是分析出解決問(wèn)題需要的步驟,然后用函數(shù)把這些步驟一個(gè)個(gè)實(shí)現(xiàn),使用的時(shí)候一個(gè)一個(gè)依次調(diào)用就行了。而在面向?qū)ο笾?,系統(tǒng)中的基本構(gòu)件可識(shí)認(rèn)為一組可識(shí)別的離散對(duì)象,對(duì)象具有唯一的靜態(tài)類型和多個(gè)可能動(dòng)態(tài)類型,在基本層次關(guān)系的不同類中共享數(shù)據(jù)和操作。
image.png
3 優(yōu)勢(shì)不同:面向過(guò)程不支持豐富的‘面對(duì)對(duì)象’特性(封裝、繼承、多態(tài)),并且不允許混合持久化狀態(tài)和域邏輯。面向?qū)ο笤趦?nèi)部如被表示為一個(gè)指向一組屬性的指針。任何對(duì)這個(gè)對(duì)象的操作都會(huì)經(jīng)過(guò)這個(gè)指針操作對(duì)象的屬性和方法。
2、類
- 類是面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)現(xiàn)信息封裝的基礎(chǔ)。類是一種用戶定義的引用數(shù)據(jù)類型。也稱為類類型。每個(gè)類包含數(shù)據(jù)說(shuō)明和一組操作數(shù)據(jù)和傳遞數(shù)據(jù)的方法,類的實(shí)例稱為對(duì)象。
2.1、類的介紹
- 類的實(shí)質(zhì)是一種引用數(shù)據(jù)類型,類似于int、str、bool等基本數(shù)據(jù)類型。不同的是,它是一種復(fù)雜的數(shù)據(jù)類型,它的本質(zhì)是 數(shù)據(jù)類型,而不是數(shù)據(jù),所以不存在內(nèi)存中,不能被直接操作,只有被實(shí)例化為對(duì)象之后,才會(huì)變得可操作。
- 類是對(duì)現(xiàn)實(shí)生活中一 類具有相同特征的事物的抽象。
- 類的內(nèi)部封裝了屬性和方法,用于操作自身的成員。類是對(duì)某種對(duì)象的定義,具有行為,它描述了一個(gè)對(duì)象能夠做什么以及做的方法,它們是可以對(duì)這個(gè)對(duì)象進(jìn)行操作的程序和過(guò)程。它包含有關(guān)對(duì)象的行為方式的信息,包括它的屬性、名稱、方法和事件。
- 類的構(gòu)成:屬性和方法。類的屬性也是一種數(shù)據(jù)類型,并不需要分配內(nèi)存,方法用于操作各種屬性,是一個(gè)類具有的特有的操作。類和外界發(fā)生交互的操作稱為接口。
2.2、類的三大特性
1 封裝性:將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作當(dāng)成一個(gè)有機(jī)的整體。在類的內(nèi)部定義屬性和方法,通過(guò)對(duì)象和類名來(lái)訪問(wèn)屬性和方法,隱藏功能的實(shí)現(xiàn)細(xì)節(jié),也可以設(shè)置訪問(wèn)權(quán)限。廣義的封裝:實(shí)例化一個(gè)對(duì)象,給對(duì)象空間封裝一些屬性和方法;狹義的封裝:私有制,私有靜態(tài)字段,私有方法,私有對(duì)象屬性。
2 繼承性:子類需要重用父類的方法和屬性,子類也可以定義自己的屬性和方法。
3 多態(tài)性:和多態(tài)是兩種概念。多態(tài)是指一種事物有多種形態(tài),比如動(dòng)物類,有狗,貓等。(一個(gè)抽象類有多個(gè)子類,因此多態(tài)的概念依賴于繼承)多態(tài)性是指不同功能的函數(shù)可以使用相同的函數(shù)名,這樣就可以用一個(gè)函數(shù)名來(lái)調(diào)用不同內(nèi)容的函數(shù)。在面向?qū)ο蠓椒ㄖ幸话闶沁@樣來(lái)表述多態(tài)性:向不同的對(duì)象發(fā)送同一條消息,不同的對(duì)象在接收時(shí)會(huì)產(chǎn)生不同的行為(即方法)。也就是說(shuō),每個(gè)對(duì)象可以用自己的方式去響應(yīng)相同的消息,所謂消息,就是調(diào)用函數(shù),不同的行為就是不同的實(shí)現(xiàn),即調(diào)用不同的函數(shù)。
2.3、類的用法
語(yǔ)法:
# 語(yǔ)法
class 類名([父類]):
pass
- 類和對(duì)象都是對(duì)現(xiàn)實(shí)生活中事物的抽象
- 數(shù)據(jù)包含兩方面:
1 數(shù)據(jù)(屬性)
2 行為(方法) - 調(diào)用方法
對(duì)象.方法名() - 方法調(diào)用和函數(shù)調(diào)用的區(qū)別:如果是函數(shù)調(diào)用,調(diào)用時(shí)有幾個(gè)形參,就會(huì)傳遞幾個(gè)實(shí)參。如果是方法調(diào)用 ,默認(rèn)傳遞一個(gè)參數(shù),所以方法中至少要有一個(gè)形參
- 在類代碼中,我們可以定義屬性和方法:
1 變量會(huì)成為該類實(shí)例的公共屬性,所有的實(shí)例對(duì)象都可以通過(guò)對(duì)象.屬性名的方式訪問(wèn)
2 方法會(huì)成為該類實(shí)例的公共方法,所有的實(shí)例對(duì)象都可以通過(guò)對(duì)象.方法名的方式訪問(wèn)
3、參數(shù)self
3.1、屬性和方法
- 類中定義的屬性和方法都是公共的,任何該類實(shí)例都可以訪問(wèn)
- 屬性和方法的查找流程
當(dāng)調(diào)用一個(gè)對(duì)象的屬性是,解析器會(huì)先在當(dāng)前的對(duì)象中尋找是否有該屬性,如果有,則直接返回該屬性的值,如果沒(méi)有,則去當(dāng)前對(duì)象的類對(duì)象中去尋找,如果有該屬性,這返回該屬性的值,如果沒(méi)有,則報(bào)錯(cuò)。 - 類對(duì)象和實(shí)例對(duì)象都可以保存實(shí)例(方法)
1 如果這個(gè)屬性(方法)是所有的屬性所共享的,則應(yīng)該將其保存到類對(duì)象中
2 如果這個(gè)屬性(方法)是某個(gè)實(shí)例獨(dú)有的,則應(yīng)該將其保存到對(duì)應(yīng)的實(shí)例對(duì)象中
3 一般情況下,屬性保存到實(shí)例對(duì)象中 方法需要保存到類對(duì)象中
3.2、self
- self 在定義是需要定義,但是在調(diào)用時(shí)會(huì)自動(dòng)傳入
- self的名字并不是規(guī)定死的,但是還是按照約定用self
- self總是指調(diào)用時(shí)的類的實(shí)例
