一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

思維導(dǎo)圖:python面向?qū)ο螅ǜ阈Π咐?/span>

 用好人做好事 2022-01-23


圖片

圖片

 

手機版本

圖片

關(guān)聯(lián)閱讀:可能是最全的 Python 面向?qū)ο笕腴T教程了

Python面向?qū)ο?/h2>

面向?qū)ο笕腴T

對象編程體驗

  • 一款簡單自動運行小游戲模擬:在一維的地圖上,有一只蟲子和一只螞蟻。每一次他們都走過一個-3,-2,2,3個隨機單位的距離(選定走法,若達(dá)到地圖邊界則放棄移動)。當(dāng)螞蟻、蟲子處于同一位置時,螞蟻吃掉蟲子,程序結(jié)束。

  • PO

    • 蟲子的初始位置

    • 螞蟻的初始位置

    • 進入循環(huán)(條件為螞蟻和蟲子不在同一位置)

    • 依照規(guī)則,螞蟻和蟲子移動位置

    • 直到螞蟻和蟲子走到同一位置,程序結(jié)束

  • OO

    • 游戲中的對象有:地圖、蟲子、螞蟻

    • 地圖是一維的,只需要記錄蟲子和螞蟻的位置

    • 螞蟻和蟲子知道自己的位置

    • 螞蟻和蟲子能按規(guī)則移動

    • 定義地圖、螞蟻、蟲子三個類

    • 主程序中實例化它們,并通過對象間的交互來完成游戲的模擬

理解對象

  • 對象可以指自然界中的任何事物

  • 計算機為解決某個領(lǐng)域問題所使用的事物(自然界中的事物的模型化)

  • 事物(對象)具有自身的特征或能力

  • 計算機中的對象具有解決問題所需的特征或能力

對象優(yōu)越性

  • 封裝

    • 將模型的特征和能力打包在一起

    • 模型的改變由模型自身來完成,就像自然界的事物一樣

    • 隱藏模型的細(xì)節(jié),外界只能使用他,而不必/不能改變他

  • 繼承

    • 符合自然界的分類規(guī)律

    • 快速的代碼重用

  • 多態(tài)

    • 子類可以繼承父類的特征與能力,還可以通過自定義來修改其特征與能力

    • 鴨子類型(duck typing)

  • 組合

    • 一個模型可以由其他的模型組成

課程簡介

培訓(xùn)對象

  • 對Python面向?qū)ο缶幊谈信d趣

  • 已掌握基礎(chǔ)的Python面向過程編程

  • 用Python自主開發(fā)大、中型應(yīng)用系統(tǒng)

  • 有未來從事Python相關(guān)開發(fā)職業(yè)目標(biāo)的

技能目標(biāo)

  • 了解面向?qū)ο缶幊痰幕局R

  • 掌握Python語言中類的定義與使用方法

  • 掌握Python中類的屬性與方法及其應(yīng)用

  • 掌握Python中類繼承與多態(tài)、方法重載

  • 會用繼承和組合來完成項目的面向?qū)ο蠓治龊痛a實現(xiàn)

怎樣學(xué)習(xí)

  • 1.掌握Python基本語法及順序、選擇、循環(huán)基本程序的編寫技能

  • 2.注意掌握面向?qū)ο蟮幕A(chǔ)知識

  • 3.聽課及時做筆記,供復(fù)習(xí)

  • 4.課后多做實踐,理論聯(lián)系實際才是最好的學(xué)習(xí)方式

  • 5.加入一些群、論壇等,幫人解決問題,提升自己

面向?qū)ο笈c面向過程

產(chǎn)生背景

  • 科學(xué)計算為目標(biāo)的必然產(chǎn)物

    • 雞兔同籠

    • 1.先假設(shè)全部為雞(兔),計算出腿數(shù)

    • 2.然后算出腿數(shù)量差

    • 3.得出雞(兔)數(shù)量

    • 4.計算出另一種動物的數(shù)量

  • 軟件應(yīng)用領(lǐng)域的擴張和系統(tǒng)膨脹之后應(yīng)運而生

編程方法

  • 自頂向下

  • 自底向上

代碼主體結(jié)構(gòu)

  • 程序=數(shù)據(jù)(變量)+算法(函數(shù)/過程)

  • 程序=對象+交互

數(shù)據(jù)操作主體

  • 由函數(shù)/過程進行加工與展現(xiàn)

  • 在對象的方法中加工與展現(xiàn)

模擬方法

  • 通過函數(shù)/過程操縱表現(xiàn)世界的數(shù)據(jù)與狀態(tài)

  • 把世界描繪成具有主動性的對象之間交互

編程思維

  • 搞清處理數(shù)據(jù)的步驟

  • 面向?qū)ο蠓治?/span>

運行效率

  • 較高

  • 稍低

定義和使用類

最簡類定義

類實例化

類與實例之間關(guān)系

  • 定義類就是建立模型(模子/印章)

  • 實例化類就是建立真實事物(產(chǎn)品/印章印出的圖案)

有特征和能力的類

  • 特征/屬性,是類自身包含或知道的數(shù)據(jù)

  • 能力,以方法體現(xiàn),是類具有能動性的體現(xiàn)

實例化步驟

  • 調(diào)用new()方法創(chuàng)建實例

  • new()方法自動從object繼承

  • 調(diào)用init()方法對其初始化

  • init()方法在類中定義

添加類說明(docstring)

  • 緊跟類名行之后,以三引號包圍的字符串

  • 查看類說明

    • 類名.doc

    • help(類名)

新式類與經(jīng)典類

  • Python 2.x版本

    • 默認(rèn)為是經(jīng)典類

    • 繼承object為新式類

  • Python 3.x版本

    • 統(tǒng)一為新式類不用繼承object

  • 區(qū)別

    • 經(jīng)典類繼承為深度優(yōu)先

    • 新式類繼承為廣度優(yōu)先

課后思考

  • 類和實例是什么關(guān)系?

  • 類的屬性和方法分別代表什么?

  • 類實例化的基本步驟是什么?

描述對象的特征

實例屬性

  • 類被實例化以后才會具有的屬性

  • 一般在init()方法中創(chuàng)建并初始化

  • 直接使用即定義:self.<屬性名>

  • 引用方法:self.<屬性名>

  • self用來代表類的實例的

  • 類外用實例名.屬性名方式定義和引用

  • 相同類的不同實例其實例屬性是不相關(guān)的

  • 一般不建議在init()方法之外中創(chuàng)建和初始化實例屬性

  • 一般不推薦類外定義和修改,修改可以單獨定義方法

類屬性

  • 類定義后就存在,而且不需要實例化

  • 類屬性使得相同類的不同實例共同持有相同變量

私有屬性

  • 不提供限制屬性訪問的關(guān)鍵字(無法限制類的各種屬性在類外直接訪問)

  • 使用__開頭的變量名加以標(biāo)志,只有類對象自己能訪問

  • 使用_開頭的變量名加以標(biāo)志,應(yīng)該只有類對象及其子類能訪問(非強制性)

特殊屬性

  • 保存對象的元數(shù)據(jù)

  • doc

  • name

  • dict

  • module

  • base

作業(yè)

  • 定義一個類Box,具有實例屬性長度(length)、寬度(width)、高度(height)。具有私有屬性體積(由長、寬、高計算得來),并且它的每個實例可以知道它被實例化的數(shù)量。然后實例化它們五次,并輸出每個實例的所有屬性。

讓對象具有能動性

類的方法的定義

  • def fun_name(self,…):    pass

  • 其中的參數(shù)self代表類的實例,在調(diào)用方法時由系統(tǒng)自動提供。

  • 方法定義時必須指明self參數(shù)

類的方法的調(diào)用

  • 與普通的函數(shù)調(diào)用類似

  • 在類的內(nèi)部調(diào)用:self.<方法名>(參數(shù)列表)

  • 在類的外部調(diào)用:<實例名>.<方法名>(參數(shù)列表)

  • 注:以上兩種調(diào)用方法中,提供的參數(shù)列表中都不用包括self

類內(nèi)方法相互調(diào)用

  • 在一個類的內(nèi)部方法之間是可以相應(yīng)調(diào)用的

  • 調(diào)用方法同上面所述的在類的內(nèi)部調(diào)用方法

構(gòu)造方法及其作用

  • 構(gòu)造方法就是前面課程提到和使用的init()方法

  • 構(gòu)造方法的作用就是在類實例化時初始化實例

  • init()方法就是類實例化的第二步自動調(diào)用的函數(shù)

  • 注意其方法名是固定的,但其參數(shù)同普通方法一樣,至少應(yīng)帶有self參數(shù)

  • 初始化實例包括:定義和初始化實例屬性;或調(diào)用類的一些方法

  • 構(gòu)造方法可以帶有除self外的其它各種參數(shù)(關(guān)鍵字參數(shù)、默認(rèn)參數(shù)、用元組收集參數(shù)、用字典收集關(guān)鍵字參數(shù)等);可以達(dá)到在實例化類時,為相應(yīng)的屬性傳入指定的值。

提醒

  • 本節(jié)課所定義的都是類的實例方法,和實例屬性一樣,必須進行類實例化之后,才能存在和調(diào)用它們。

  • 這里使用的是Python3.x版本,print是一個函數(shù)。

作業(yè)

  • 修改上次課中定義的類Box,要求其具有:訪問私有屬性(體積)的方法添加顏色屬性(_color)和設(shè)置與獲取Box的顏色的方法添加打開和關(guān)閉盒子(Box)的方法,并且限制Box打開(關(guān)閉)之后,再次調(diào)用打開(關(guān)閉)方法會給予提示;即不能重復(fù)打開與關(guān)閉。在主程序中實例化并進行測試。

深入類的屬性

同名的類屬性與實例屬性

  • 以實例名.屬性名引用時,優(yōu)先引用實例屬性

  • 以類名.屬性名引用時,只能引用類屬性

屬性訪問的特殊方法(反射)

  • 提供用字符串來操作類的屬性/方法的方式

  • 主要工具函數(shù)

    • hasattr(obj_bame,'屬性名')

    • setattr(obj_name,'屬性名',值)

    • getattr(obj_name,'屬性名')

屬性包裝

  • 將方法包裝成屬性,以隱藏相關(guān)實現(xiàn)。

    • 控制屬性的類型或范圍

    • 虛擬屬性(由其它屬性處理后得來)

  • 三種屬性操作

    • 可讀:@property

    • 可寫:@<property-name>.setter

    • 可刪:@<property-name>.deleter

描述符

  • 將實現(xiàn)特殊協(xié)議方法的類作為另一個類的類屬性

  • 用來攔截和控制屬性訪問并可以重復(fù)使用

  • 協(xié)議方法

    • get()

    • set()

    • delete()

  • 分類

    • 數(shù)據(jù)描述符(實現(xiàn)全部協(xié)議方法)

    • 非數(shù)據(jù)描述符(實現(xiàn)部分協(xié)議方法)

    • 說明:所有類成員函數(shù)都是非數(shù)據(jù)描述符

  • 同名的實例屬性和非數(shù)據(jù)描述符(以方法為例)訪問優(yōu)先級

  • 注意:只能在新式類中使用

call()讓類的實例如函數(shù)一樣可調(diào)用

作業(yè)

  • 修改上節(jié)課的作業(yè)中定義的類:1.使用屬性包裝器將私有屬性_color包裝為color(可讀寫)屬性2.運用描述符在Box類中創(chuàng)建一個類屬性(盒子六面的圖案字符,只能為數(shù)字1-6)3.為其定義call(),當(dāng)作為函數(shù)調(diào)用時,返回其體積

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国内九一激情白浆发布| 欧美日韩乱一区二区三区| 国产成人精品久久二区二区| 亚洲精品小视频在线观看| 欧美一本在线免费观看| 91精品日本在线视频| 色小姐干香蕉在线综合网| 人妻内射精品一区二区| 欧美激情一区=区三区| 真实国产乱子伦对白视频不卡 | 99精品人妻少妇一区二区人人妻| 国产毛片对白精品看片| 99久久免费看国产精品| 国产性色精品福利在线观看| 东京热一二三区在线免| 日本女人亚洲国产性高潮视频| 九九热精彩视频在线播放| 亚洲妇女作爱一区二区三区| 欧美精品久久一二三区| 欧美日韩成人在线一区| 九九热九九热九九热九九热| 日韩一区二区三区观看| 精品国产亚洲av久一区二区三区| 日韩在线精品视频观看| 亚洲国产性生活高潮免费视频 | 99国产成人免费一区二区| 国产日韩中文视频一区| 欧美在线观看视频三区| 99久久国产综合精品二区 | 亚洲欧美日本国产不卡 | 老司机精品国产在线视频| 嫩草国产福利视频一区二区| 亚洲淫片一区二区三区| 国产成人精品在线播放| 成人欧美一区二区三区视频| 精品少妇一区二区三区四区| 好吊妞视频只有这里有精品| 老司机亚洲精品一区二区| 亚洲欧美一二区日韩高清在线 | 丰满少妇被粗大猛烈进出视频| 好吊视频有精品永久免费|