0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python-面向?qū)ο?/h1>

基本概念

面向過(guò)程

  • 是早期的一個(gè)編程概念,類似函數(shù),但是沒(méi)有返回值
  • 具體做法:
    • 把完成某個(gè)需求的所有步驟,從頭到尾 逐步實(shí)現(xiàn)
    • 將某些功能獨(dú)立的代碼 封裝成一個(gè)又一個(gè) 函數(shù)
    • 然后順序調(diào)用不同的函數(shù)
  • 特點(diǎn):
    • 注重 ** 步驟與過(guò)程,** 不注重職責(zé)分工
    • 如果需求復(fù)雜,代碼會(huì)變得很復(fù)雜
    • 開發(fā)復(fù)雜項(xiàng)目,沒(méi)有固定的套路,開發(fā)難度大

**面向?qū)ο?/p>

**

  • 相較于函數(shù), 面向?qū)ο笫歉蟮姆庋b ,根據(jù)** 職責(zé)** 在一個(gè)對(duì)象中封裝多個(gè)方法
  • 在完成某個(gè)需求前,首選確定 ** 職責(zé)** ,根據(jù)職責(zé)確定不同的對(duì)象,在對(duì)象內(nèi)部封裝不同的方法
  • 最后讓不同的對(duì)象調(diào)用不同的方法
  • 特點(diǎn):
    • 注重 對(duì)象和職責(zé) ,不同的對(duì)象承擔(dān)不同的職責(zé)
    • 更加適合對(duì)應(yīng)復(fù)雜的需求變化,專門應(yīng)對(duì)復(fù)雜項(xiàng)目開發(fā),提供固定套路

**類和對(duì)象

**

  • 對(duì)象 是面向?qū)ο蟮膬蓚€(gè)核心概念
  • 在程序開發(fā)中,先有 ,后有 對(duì)象
    • 對(duì)一群具有相同 特征 或 行為的事物的一個(gè)統(tǒng)稱,是抽象的,不能直接使用
      • 特征 即 屬性
      • 行為 即 方法(函數(shù))
    • 類相當(dāng)于做汽車的 圖紙是一個(gè)模板, 而根據(jù)這個(gè) **模板 **做出來(lái)的具體物品就是 對(duì)象
    • 三要素
      • 類名 這類事物的名字 , 使用大駝峰命名法(HelloWorld)
      • **屬性 **指這類事物的特征
      • 方法 指這類事物具備的行為
  • 對(duì)象
    • **對(duì)象 **是根據(jù)類創(chuàng)建出來(lái)的一個(gè)具體存在,可以直接使用
    • 根據(jù)類創(chuàng)建出來(lái)的對(duì)象,具備與類相同的 屬性方法

**類和對(duì)象的關(guān)系

**

  • 類是模板,對(duì)象 是根據(jù) **類 **這個(gè)模板創(chuàng)建出來(lái)的,先有類,后有對(duì)象
  • 類 只有一個(gè),根據(jù)這個(gè)類創(chuàng)建的 對(duì)象 可以有多個(gè)
    • 不同的對(duì)象之間,屬性可能會(huì)各有不同
  • 類 中定義了什么樣的屬性和方法,對(duì)象中就是什么樣的屬性與方法

基礎(chǔ)語(yǔ)法

dir內(nèi)置函數(shù)

  • Python 中,對(duì)象幾乎無(wú)所不在,變更、數(shù)據(jù)、函數(shù)都是對(duì)象
  • 使用內(nèi)置函數(shù)** dir** 傳入 ** 標(biāo)識(shí)符/數(shù)據(jù)** ,可以查看對(duì)象內(nèi)的所有屬性和方法
  • 方法名 格式的方法是Python提供的 內(nèi)置方法/屬性
  • 常見方法如下| 方法名 | 類型 | 作用 |
    | ------------------ | ---------------- | ---------------------------------------- |
    | new | 方法 | 創(chuàng)建對(duì)象時(shí),會(huì)被自動(dòng)調(diào)用 |
    | init | 方法 | 對(duì)象被初始化時(shí),會(huì)被自動(dòng)調(diào)用 |
    | del | 方法 | 對(duì)象被從內(nèi)存中銷毀時(shí),會(huì)被自動(dòng)調(diào)用 |
    | str | 方法 | 返回對(duì)象的描述信息,print 函數(shù)輸出使用 |

示例

# 定義函數(shù),測(cè)試內(nèi)置方法
def demo():
  pass


print(dir(demo))

輸出結(jié)果

圖片

定義簡(jiǎn)單類

  • **面向?qū)ο?**是更大的封裝,在一個(gè)類中封裝多個(gè)方法,通過(guò)這個(gè)類創(chuàng)建的對(duì)象 可以直接使用這些方法
  • 類中方法的定義,與之前定義函數(shù)時(shí),幾乎一樣,區(qū)別在于每一個(gè)參數(shù)必須是 self,** self 表示調(diào)用者本身的引用**
  • 調(diào)用中對(duì)象中的方法時(shí),self 不需要傳遞
  • 可以通過(guò) self 調(diào)用對(duì)象的其它屬性或方法

示例

"""
需求:
定義一個(gè)狗類,狗有 吃骨頭,睡覺(jué)兩個(gè)方法


"""
class Dog:


  # 第一個(gè)參數(shù) 必須是 self,表示調(diào)用者本身的引用
  def eat(self):
    print("狗狗要吃骨頭了...")


  def sleep(self):
    print("狗狗要睡覺(jué)了...")


# 定義對(duì)象調(diào)用方法
dog=Dog()
dog.eat()
dog.sleep()


# 定義第二個(gè) 狗對(duì)象
dog2=Dog()
dog2.eat()
dog2.sleep()


# dog 和dog2 是用同一個(gè)類 創(chuàng)建出來(lái)的,里面的方法和屬性是一樣的,但是對(duì)象的引用是不同的
print(dog)
print(dog2)

輸出結(jié)果

圖片

對(duì)象的初始化

  • 當(dāng)使用 類名() 創(chuàng)建對(duì)象時(shí),會(huì) 自動(dòng) 執(zhí)行以下操作
    • 為對(duì)象分配內(nèi)存空間
    • 為對(duì)象的屬性設(shè)置初始值(即調(diào)用 init 方法)
  • **init **是對(duì)象的內(nèi)置方法,專門用來(lái)定義一個(gè)類 具有哪些屬性的方法

**示例

**

class Dog:


  def __init__(self,name):
    print("開始初始化Dog的屬性...")
    self.name=name


  def eat(self):
    print("%s 開始吃骨頭了..."%self.name)


  def sleep(self):
    print("%s 想要睡覺(jué)了..." %self.name)




# 定義對(duì)象,并為其屬性賦值
dog=Dog("小白")
dog.eat()
dog.sleep()


dog2=Dog("小黑")
dog2.eat()
dog2.sleep()

輸出結(jié)果

圖片

**內(nèi)置方法

**

  • del 方法:當(dāng)一個(gè)對(duì)象被從內(nèi)存中銷毀時(shí),會(huì)自動(dòng)調(diào)用
  • 應(yīng)用場(chǎng)景
    • init 改造初始化方法,可以讓對(duì)象更加靈活
    • del 如果希望對(duì)象在被銷毀前,再做一些事情,可以使用此方法
  • 生命周期
    • 一個(gè)對(duì)象從調(diào)用 類名() 創(chuàng)建,生命周期開始
    • 一個(gè)對(duì)象的 del 方法一旦被調(diào)用,生命周期結(jié)束
    • 在對(duì)象的生命周期內(nèi),可以訪問(wèn)對(duì)象屬性,或者調(diào)用對(duì)象方法
  • str 方法: 默認(rèn)打印 對(duì)象變量的引用內(nèi)存地址值, 如果希望使用 print 輸出對(duì)象變量時(shí),能夠打印 自定義的內(nèi)容 ,就可以利用 str 方法,該方法必須返回一個(gè)字符串

示例

class Dog:


  def __del__(self):
    print("小黑去輪回了......")


  def __str__(self):
    return "我是小黑的自定義打印內(nèi)容。。。"


dog=Dog()
print(dog)
print("---------------11111111111")

輸出結(jié)果

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3521

    瀏覽量

    93270
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61969
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python面向對(duì)象編程詳解

    一般編程可分為面向過(guò)程編程,和面向對(duì)象編程。Python面向對(duì)象編程,與Java的
    發(fā)表于 09-04 16:35 ?453次閱讀
    <b class='flag-5'>Python</b>的<b class='flag-5'>面向</b><b class='flag-5'>對(duì)象</b>編程詳解

    labview面向對(duì)象編程

    點(diǎn)擊學(xué)習(xí)>>《龍哥手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)》視頻教程使用LabVIEW面向對(duì)象編程方法,對(duì)于大型測(cè)試應(yīng)用程序來(lái)講,面向對(duì)象相對(duì)于面向
    發(fā)表于 11-24 11:01

    3分鐘看懂Python面向對(duì)象

    Python雖然是解釋型語(yǔ)言,但從設(shè)計(jì)之初就已經(jīng)是一門面向對(duì)象的語(yǔ)言,對(duì)于Python來(lái)說(shuō)一切皆為對(duì)象。正因?yàn)槿绱?,?/div>
    發(fā)表于 06-08 14:20

    面向對(duì)象編程及其三大特性 精選資料分享

    編程語(yǔ)言分為面向過(guò)程編程、函數(shù)式編程和面向對(duì)象編程。其實(shí)python就是一種面向對(duì)象編程,那么我
    發(fā)表于 07-21 08:38

    談?wù)?b class='flag-5'>面向對(duì)象編程

    在工業(yè)自動(dòng)化領(lǐng)域,梯形圖邏輯仍然是最常用的編程語(yǔ)言之一,但對(duì)于更加復(fù)雜的控制對(duì)象,面向對(duì)象編程不失為一種高效率的方式。下面先來(lái)談?wù)?b class='flag-5'>面向對(duì)象
    發(fā)表于 09-08 07:47

    面向對(duì)象編程總結(jié)

    如何從面向過(guò)程到面向對(duì)象OOP?面向對(duì)象是什么?有何特點(diǎn)?
    發(fā)表于 09-29 08:19

    請(qǐng)問(wèn)python-樹莓派如何通過(guò)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn)?

    步進(jìn)電機(jī)驅(qū)動(dòng)原理是什么?python-樹莓派如何通過(guò)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn)?
    發(fā)表于 10-09 08:45

    面向對(duì)象編程介紹

    目錄一、面向對(duì)象編程介紹1.面向過(guò)程編程2.函數(shù)式編程3.面向對(duì)象編程二.面向
    發(fā)表于 12-13 07:22

    python-控制khr3hv-master機(jī)器人

    python-控制khr3hv機(jī)器人,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-22 15:40 ?2次下載

    這可能是Python面向對(duì)象編程的最佳實(shí)踐

    本節(jié)介紹了attrs和cattrs兩個(gè)庫(kù),讓實(shí)現(xiàn)Python面向對(duì)象編程不再難。
    的頭像 發(fā)表于 06-22 12:07 ?2611次閱讀

    利用Python和PyTorch處理面向對(duì)象的數(shù)據(jù)集

    本篇是利用 Python 和 PyTorch 處理面向對(duì)象的數(shù)據(jù)集系列博客的第 2 篇。 如需閱讀第 1 篇:原始數(shù)據(jù)和數(shù)據(jù)集,請(qǐng)參閱此處。 我們?cè)诘?1 部分中已定義 MyDataset 類,現(xiàn)在
    的頭像 發(fā)表于 08-25 15:30 ?2893次閱讀

    利用 Python 和 PyTorch 處理面向對(duì)象的數(shù)據(jù)集(2)) :創(chuàng)建數(shù)據(jù)集對(duì)象

    本篇是利用 Python 和 PyTorch 處理面向對(duì)象的數(shù)據(jù)集系列博客的第 2 篇。我們?cè)诘?1 部分中已定義 MyDataset 類,現(xiàn)在,讓我們來(lái)例化 MyDataset 對(duì)象
    的頭像 發(fā)表于 08-02 17:35 ?832次閱讀
    利用 <b class='flag-5'>Python</b> 和 PyTorch 處理<b class='flag-5'>面向</b><b class='flag-5'>對(duì)象</b>的數(shù)據(jù)集(2)) :創(chuàng)建數(shù)據(jù)集<b class='flag-5'>對(duì)象</b>

    面向過(guò)程與面向對(duì)象的區(qū)別

    說(shuō)起面向對(duì)象,大家可能會(huì)想到其他的,但是此對(duì)象非彼對(duì)象哈哈,不必驚慌,也特別好搞定。 在聽到面向對(duì)
    的頭像 發(fā)表于 02-15 11:10 ?3720次閱讀
    <b class='flag-5'>面向</b>過(guò)程與<b class='flag-5'>面向</b><b class='flag-5'>對(duì)象</b>的區(qū)別

    Python中的類和對(duì)象詳解

    Python 是一種面向對(duì)象的編程語(yǔ)言,它支持類和對(duì)象。類是一種用戶自定義的數(shù)據(jù)類型,用于定義對(duì)象的屬性和方法。
    的頭像 發(fā)表于 04-20 16:53 ?964次閱讀

    Python面向對(duì)象深化(下)

    __call__ ?方法和可調(diào)用對(duì)象 凡是可以將 () 直接應(yīng)用到自身并執(zhí)行, 都稱為可調(diào)用對(duì)象. 注意: 可調(diào)用對(duì)象包括自定義的函數(shù)、Python 內(nèi)置函數(shù)、以及本節(jié)所講的實(shí)例
    的頭像 發(fā)表于 05-11 17:52 ?583次閱讀