11 面向?qū)ο笠?/h2>

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)
  1. id(標(biāo)識(shí))
  2. type(類型)標(biāo)識(shí)當(dāng)前對(duì)象所屬的類型 人有什么功能?
    類型就決定了這個(gè)對(duì)象有哪些功能
  3. 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í)?活中事物的抽象
  • 事物包含兩部分
  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è)形參

  • 在類代碼塊中,我們可以定義變量和函數(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í)例
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容