11 面向?qū)ο笠?/h1>
1. ?向?qū)ο蠛?jiǎn)介
- Python是???向?qū)ο蟮木幊陶Z(yǔ)?
- 所謂?向?qū)ο蟮恼Z(yǔ)?,簡(jiǎn)單理解就是語(yǔ)?中的所有操作都是通過(guò)對(duì)象來(lái)進(jìn)?的
- 什么是對(duì)象
對(duì)象就是內(nèi)存中存儲(chǔ)指定數(shù)據(jù)的一塊區(qū)域
- 對(duì)象的結(jié)構(gòu)
- id(標(biāo)識(shí))
- type(類型)標(biāo)識(shí)當(dāng)前對(duì)象所屬的類型 人有什么功能?
類型就決定了這個(gè)對(duì)象有哪些功能
- value(值)對(duì)象中存儲(chǔ)的具體的數(shù)據(jù)
對(duì)象分2類:
可變對(duì)象 值可以改變
不可變對(duì)象 值不能改變
1.1 ?向過(guò)程
- ?向過(guò)程指將我們的程序分解為?個(gè)?個(gè)步驟,通過(guò)對(duì)每個(gè)步驟的抽象來(lái)完成程序
- 這種編寫(xiě)?式往往只適?于?個(gè)功能,如果要實(shí)現(xiàn)別的功能,往往復(fù)?性?較低
- 這種編程?式符號(hào)?類的思維,編寫(xiě)起來(lái)?較容易
1.媽媽穿?服穿鞋出?
2.媽媽騎上電動(dòng)?
3.媽媽到超市??放好電動(dòng)?
4.媽媽買??
5.媽媽結(jié)賬
6.媽媽騎電動(dòng)?回家
7.到家孩?吃??
1.2 面向?qū)ο?/h3>
- ?向?qū)ο蟮木幊陶Z(yǔ)?,關(guān)注的是對(duì)象,?不注重過(guò)程,對(duì)于?向?qū)ο?切皆對(duì)象
- 以上?式可以? 孩?媽媽給孩?買?來(lái)解決
- ?向?qū)ο蟮木幊趟枷?,將所有功能統(tǒng)?保存到對(duì)應(yīng)的對(duì)象中,要使?某個(gè)功能,直接找到對(duì)應(yīng)的對(duì)象即可
- 這種編碼?式不太容易閱讀,但易于維護(hù),容易復(fù)?。但是編寫(xiě)的過(guò)程中不太符合常規(guī)的思維,編寫(xiě)相對(duì)麻煩
2. 類(class)
- 我們?前學(xué)習(xí)的都是Python的內(nèi)置對(duì)象,但是內(nèi)置對(duì)象并不都能滿?我們的需求,所以我們?cè)陂_(kāi)發(fā)中經(jīng)常要?定義?些對(duì)象
- 類簡(jiǎn)單理解它就是相當(dāng)于?個(gè)圖紙,在程序匯總我們需要根據(jù)類來(lái)創(chuàng)建對(duì)象。
- 類就是對(duì)象的圖紙
- 我們也稱對(duì)象是類的實(shí)例(instance):int() float() bool() list()...均為小寫(xiě)
- 如果多個(gè)對(duì)象是通過(guò)?個(gè)類創(chuàng)建的,我們稱這些對(duì)象是?類對(duì)象
自己定義一個(gè)類,使用class關(guān)鍵字來(lái)定義(類名需要大寫(xiě))
'#語(yǔ)法
class 類名(父類):
....代碼塊
class MyClass:
....pass
print(MyClass)
- 類也是?個(gè)對(duì)象,類就是?來(lái)創(chuàng)建對(duì)象的對(duì)象
類是type類型的對(duì)象,定義類實(shí)際上就是定義了一個(gè)type類型對(duì)象
- 可以向?qū)ο笾刑砑幼兞?,?duì)象中的變量稱之為屬性
語(yǔ)法:對(duì)象.屬性名 = 屬性值
- 對(duì)象都是對(duì)現(xiàn)實(shí)事物的一種抽象
3. 類的定義
- 類和對(duì)象都是對(duì)現(xiàn)實(shí)?活中事物的抽象
- 事物包含兩部分
- 數(shù)據(jù)(屬性)
- ?為(?法)
- 調(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è)形參
在類代碼塊中,我們可以定義變量和函數(shù)
變量會(huì)成為該類實(shí)例的公共屬性,所有的該實(shí)例都可以通過(guò) 對(duì)象.屬性名的形式訪問(wèn)
函數(shù)會(huì)成為該類實(shí)例的公共?法,所有該類實(shí)例都可以通過(guò) 對(duì)象.?法名的形式訪問(wèn)
4. 參數(shù)self
4.1 屬性和?法
- 實(shí)例為什么能訪問(wèn)到類中屬性和方法
類中定義的屬性和?法都是公共的,任何該類實(shí)例都可以訪問(wèn)
- 屬性和?法的查找流程
當(dāng)我們調(diào)??個(gè)對(duì)象的屬性時(shí),解析器會(huì)現(xiàn)在當(dāng)前的對(duì)象中尋找是否還有該屬性,如果有,則直接返回當(dāng)前的對(duì)象的屬性值。如果沒(méi)有,則去當(dāng)前對(duì)象的類對(duì)象中去尋找,如果有則返回類對(duì)象的屬性值。如果沒(méi)有就報(bào)錯(cuò)
- 類對(duì)象和實(shí)例對(duì)象中都可以保存屬性(?法)
如果這個(gè)屬性(?法)是所以的實(shí)例共享的,則應(yīng)該將其保存到類對(duì)象中
如果這個(gè)屬性(?法)是摸個(gè)實(shí)例獨(dú)有的。則應(yīng)該保存到實(shí)例對(duì)象中
?般情況下,屬性保存到實(shí)例對(duì)象中 ??法需要保存到類對(duì)象中
實(shí)例對(duì)象:p1=Person()
類:def speak(a):
4.2 self
- self在定義時(shí)需要定義,但是在調(diào)?時(shí)會(huì)?動(dòng)傳?。
- self的名字并不是規(guī)定死的,但是最好還是按照約定是?self
- self總是指調(diào)?時(shí)的類的實(shí)例
對(duì)象就是內(nèi)存中存儲(chǔ)指定數(shù)據(jù)的一塊區(qū)域
類型就決定了這個(gè)對(duì)象有哪些功能
對(duì)象分2類:
可變對(duì)象 值可以改變
不可變對(duì)象 值不能改變
1.媽媽穿?服穿鞋出?
2.媽媽騎上電動(dòng)?
3.媽媽到超市??放好電動(dòng)?
4.媽媽買??
5.媽媽結(jié)賬
6.媽媽騎電動(dòng)?回家
7.到家孩?吃??
- ?向?qū)ο蟮木幊陶Z(yǔ)?,關(guān)注的是對(duì)象,?不注重過(guò)程,對(duì)于?向?qū)ο?切皆對(duì)象
- 以上?式可以? 孩?媽媽給孩?買?來(lái)解決
- ?向?qū)ο蟮木幊趟枷?,將所有功能統(tǒng)?保存到對(duì)應(yīng)的對(duì)象中,要使?某個(gè)功能,直接找到對(duì)應(yīng)的對(duì)象即可
- 這種編碼?式不太容易閱讀,但易于維護(hù),容易復(fù)?。但是編寫(xiě)的過(guò)程中不太符合常規(guī)的思維,編寫(xiě)相對(duì)麻煩
2. 類(class)
- 我們?前學(xué)習(xí)的都是Python的內(nèi)置對(duì)象,但是內(nèi)置對(duì)象并不都能滿?我們的需求,所以我們?cè)陂_(kāi)發(fā)中經(jīng)常要?定義?些對(duì)象
- 類簡(jiǎn)單理解它就是相當(dāng)于?個(gè)圖紙,在程序匯總我們需要根據(jù)類來(lái)創(chuàng)建對(duì)象。
- 類就是對(duì)象的圖紙
- 我們也稱對(duì)象是類的實(shí)例(instance):int() float() bool() list()...均為小寫(xiě)
- 如果多個(gè)對(duì)象是通過(guò)?個(gè)類創(chuàng)建的,我們稱這些對(duì)象是?類對(duì)象
自己定義一個(gè)類,使用class關(guān)鍵字來(lái)定義(類名需要大寫(xiě))
'#語(yǔ)法
class 類名(父類):
....代碼塊
class MyClass:
....pass
print(MyClass)

- 類也是?個(gè)對(duì)象,類就是?來(lái)創(chuàng)建對(duì)象的對(duì)象
類是type類型的對(duì)象,定義類實(shí)際上就是定義了一個(gè)type類型對(duì)象

- 可以向?qū)ο笾刑砑幼兞?,?duì)象中的變量稱之為屬性
語(yǔ)法:對(duì)象.屬性名 = 屬性值

- 對(duì)象都是對(duì)現(xiàn)實(shí)事物的一種抽象
3. 類的定義
- 類和對(duì)象都是對(duì)現(xiàn)實(shí)?活中事物的抽象
- 事物包含兩部分
- 數(shù)據(jù)(屬性)
- ?為(?法)
- 調(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è)形參
在類代碼塊中,我們可以定義變量和函數(shù)
變量會(huì)成為該類實(shí)例的公共屬性,所有的該實(shí)例都可以通過(guò) 對(duì)象.屬性名的形式訪問(wèn)
函數(shù)會(huì)成為該類實(shí)例的公共?法,所有該類實(shí)例都可以通過(guò) 對(duì)象.?法名的形式訪問(wèn)
4. 參數(shù)self
4.1 屬性和?法
- 實(shí)例為什么能訪問(wèn)到類中屬性和方法
類中定義的屬性和?法都是公共的,任何該類實(shí)例都可以訪問(wèn) - 屬性和?法的查找流程
當(dāng)我們調(diào)??個(gè)對(duì)象的屬性時(shí),解析器會(huì)現(xiàn)在當(dāng)前的對(duì)象中尋找是否還有該屬性,如果有,則直接返回當(dāng)前的對(duì)象的屬性值。如果沒(méi)有,則去當(dāng)前對(duì)象的類對(duì)象中去尋找,如果有則返回類對(duì)象的屬性值。如果沒(méi)有就報(bào)錯(cuò) - 類對(duì)象和實(shí)例對(duì)象中都可以保存屬性(?法)
如果這個(gè)屬性(?法)是所以的實(shí)例共享的,則應(yīng)該將其保存到類對(duì)象中
如果這個(gè)屬性(?法)是摸個(gè)實(shí)例獨(dú)有的。則應(yīng)該保存到實(shí)例對(duì)象中
?般情況下,屬性保存到實(shí)例對(duì)象中 ??法需要保存到類對(duì)象中
實(shí)例對(duì)象:p1=Person()
類:def speak(a):
4.2 self
- self在定義時(shí)需要定義,但是在調(diào)?時(shí)會(huì)?動(dòng)傳?。
- self的名字并不是規(guī)定死的,但是最好還是按照約定是?self
- self總是指調(diào)?時(shí)的類的實(shí)例
