《Python程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)教程》 課件-第7章 面向?qū)ο缶幊蘝第1頁
《Python程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)教程》 課件-第7章 面向?qū)ο缶幊蘝第2頁
《Python程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)教程》 課件-第7章 面向?qū)ο缶幊蘝第3頁
《Python程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)教程》 課件-第7章 面向?qū)ο缶幊蘝第4頁
《Python程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)教程》 課件-第7章 面向?qū)ο缶幊蘝第5頁
已閱讀5頁,還剩85頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第7章面向?qū)ο缶幊獭禤ython程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)教程》學(xué)習(xí)目標(biāo)/Target了解面向?qū)ο缶幊蹋軌蛘f出什么是面向?qū)ο缶幊?/p>

熟悉對(duì)象和類的概念,能夠說出對(duì)象和類的關(guān)系

掌握類的定義和對(duì)象的創(chuàng)建方式,能夠通過class定義類并創(chuàng)建該類的對(duì)象

掌握類屬性,能夠在程序中訪問和修改類屬性

掌握實(shí)例方法的定義,能夠通過類的對(duì)象調(diào)用定義的實(shí)例方法學(xué)習(xí)目標(biāo)/Target掌握實(shí)例屬性的基本使用,能夠訪問、修改實(shí)例屬性和動(dòng)態(tài)添加實(shí)例屬性

掌握__init__()方法的使用,能夠在__init__()方法中定義實(shí)例屬性

掌握類方法的定義與使用,能夠在類中定義類方法并使用

掌握靜態(tài)方法的定義與使用,能夠在類中定義靜態(tài)方法并使用

掌握私有屬性和私有方法,能夠在類中添加和使用私有屬性和私有方法學(xué)習(xí)目標(biāo)/Target熟悉封裝的特性,能夠?qū)崿F(xiàn)類的封裝

掌握單繼承、多繼承的語法,能夠在類中實(shí)現(xiàn)單繼承和多繼承

掌握重寫的方式,能夠在子類中實(shí)現(xiàn)父類方法的重寫

掌握super()函數(shù)的使用,能夠通過super()函數(shù)調(diào)用父類中被重寫的方法

熟悉多態(tài)的特性,能夠在程序中以多態(tài)的形式調(diào)用類中定義的方法章節(jié)概述/Summary面向?qū)ο缶幊淌浅绦蜷_發(fā)領(lǐng)域的重要思想,這種思想模擬了人類認(rèn)識(shí)客觀世界的思維方式,將開發(fā)中遇到的事物看作對(duì)象。Python支持面向?qū)ο缶幊蹋襊ython3.x版的Python源碼全部基于面向?qū)ο缶幊淘O(shè)計(jì),因此了解面向?qū)ο缶幊痰乃枷雽?duì)學(xué)習(xí)Python而言非常重要。本章通過4個(gè)任務(wù)對(duì)面向?qū)ο缶幊痰南嚓P(guān)知識(shí)進(jìn)行講解。目錄/Contents任務(wù)7-1航天器信息查詢工具任務(wù)7-2超市管理系統(tǒng)任務(wù)7-3考勤系統(tǒng)任務(wù)7-4人機(jī)猜拳游戲航天器信息查詢工具任務(wù)7-1任務(wù)描述名稱發(fā)射時(shí)間簡介

天問一號(hào)2020年天問一號(hào)是我國自行研制的探測(cè)器,負(fù)責(zé)執(zhí)行中國第一次自主火星探測(cè)任務(wù)長征十一號(hào)海射運(yùn)載火箭2022年長征十一號(hào)是我國自主研制的一型四級(jí)全固體運(yùn)載火箭。該火箭主要用于快速機(jī)動(dòng)發(fā)射應(yīng)急衛(wèi)星,滿足自然災(zāi)害、突發(fā)事件等應(yīng)急情況下微小衛(wèi)星發(fā)射需求長征五號(hào)B運(yùn)載火箭2020年長征五號(hào)B運(yùn)載火箭是專門為中國載人航天工程空間站建設(shè)研制的一型新型運(yùn)載火箭,以長征五號(hào)火箭為基礎(chǔ)改進(jìn)而成,是中國近地軌道運(yùn)載能力最大的新一代運(yùn)載火箭航天器和火箭的簡介信息任務(wù)描述【任務(wù)目標(biāo)】本任務(wù)要求編寫代碼,設(shè)計(jì)一個(gè)輸入航天器和火箭名稱,便可查詢?cè)撁Q對(duì)應(yīng)的發(fā)射時(shí)間和簡介的查詢工具類,該工具類具備以下內(nèi)容。(1)信息列表(2)查詢信息的功能請(qǐng)輸入查詢名稱:XXXX發(fā)射時(shí)間:XXXX

簡介:XXXX知識(shí)儲(chǔ)備了解面向?qū)ο缶幊?,能夠說出什么是面向?qū)ο缶幊虒W(xué)習(xí)目標(biāo)1.面向?qū)ο缶幊毯喗橹R(shí)儲(chǔ)備1.面向?qū)ο缶幊毯喗槊嫦蜻^程編程一般會(huì)先分析解決問題的步驟,使用函數(shù)實(shí)現(xiàn)每個(gè)步驟的功能,之后按步驟依次調(diào)用函數(shù)。面向過程編程面向?qū)ο缶幊虝?huì)先分析問題,從中提煉出多個(gè)對(duì)象,將不同對(duì)象各自的特征和行為進(jìn)行封裝,之后通過控制對(duì)象的行為來解決問題。面向?qū)ο缶幊讨R(shí)儲(chǔ)備1.面向?qū)ο缶幊毯喗橥婕移灞P規(guī)則系統(tǒng)特征棋子(黑或白子)棋盤數(shù)據(jù)無

行為落子顯示棋盤、更新棋盤判定勝負(fù)五子棋游戲(面向過程編程)五子棋游戲(面向?qū)ο缶幊蹋┟嫦驅(qū)ο缶幊瘫WC了功能的統(tǒng)一性,基于面向?qū)ο缶幊虒?shí)現(xiàn)的程序更容易維護(hù)。知識(shí)儲(chǔ)備2.對(duì)象和類熟悉對(duì)象和類的概念,能夠說出對(duì)象和類的關(guān)系學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備2.對(duì)象和類對(duì)象是構(gòu)成世界的一個(gè)獨(dú)立單位,它由數(shù)據(jù)(描述事物的特征)和作用于數(shù)據(jù)的操作(體現(xiàn)事物的行為)構(gòu)成一個(gè)獨(dú)立整體。對(duì)象忽略事物的非本質(zhì)特征,關(guān)注與目標(biāo)有關(guān)的本質(zhì)特征,找出事物間的共性,抽象出一個(gè)概念模型,就是定義一個(gè)類。類在面向?qū)ο缶幊讨校愂蔷哂邢嗤卣骱托袨榈囊唤M對(duì)象的集合,它提供一個(gè)抽象的描述,其內(nèi)部包括特征和行為兩個(gè)主要部分,它就像一個(gè)模具,可以用它鑄造一個(gè)個(gè)具體的鑄件。知識(shí)儲(chǔ)備3.類的定義掌握類的定義方式,能夠通過class關(guān)鍵字定義類學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備3.類的定義Python中使用關(guān)鍵字class來定義一個(gè)類。classStudent:

age=17

name='小明'

defstudy(self):

print('學(xué)習(xí)')class類名:

屬性名=屬性值

def方法名(self):方法體語法格式知識(shí)儲(chǔ)備3.類的定義Python中使用關(guān)鍵字class來定義一個(gè)類。classStudent:

age=17

name='小明'

defstudy(self):

print('學(xué)習(xí)')class類名:

屬性名=屬性值

def方法名(self):方法體語法格式屬性知識(shí)儲(chǔ)備3.類的定義Python中使用關(guān)鍵字class來定義一個(gè)類。classStudent:

age=17

name='小明'

defstudy(self):

print('學(xué)習(xí)')class類名:

屬性名=屬性值

def方法名(self):方法體語法格式方法知識(shí)儲(chǔ)備4.對(duì)象的創(chuàng)建與使用掌握對(duì)象的創(chuàng)建方式,能夠創(chuàng)建對(duì)象并使用對(duì)象訪問屬性或調(diào)用方法學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備4.對(duì)象的創(chuàng)建與使用類定義完成后不能直接使用。這就好比畫好了一張房屋設(shè)計(jì)圖紙,此圖紙只能幫助人們了解房屋的結(jié)構(gòu),但不能提供居住場(chǎng)所。為滿足人們的居住需求,需要根據(jù)房屋設(shè)計(jì)圖紙搭建實(shí)際的房屋。同理,程序中的類需要實(shí)例化為對(duì)象才能實(shí)現(xiàn)其意義。知識(shí)儲(chǔ)備4.對(duì)象的創(chuàng)建與使用(1)對(duì)象的創(chuàng)建student=Student()對(duì)象名=類名()語法格式(2)對(duì)象的使用print(student.age)print()student.study()對(duì)象名.屬性名對(duì)象名.方法名(參數(shù)1,參數(shù)2,...)

語法格式知識(shí)儲(chǔ)備5.類屬性掌握類屬性,能夠在程序中訪問和修改類屬性學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備5.類屬性類屬性是定義在類內(nèi)部、方法外部的屬性。例如,前面Student類內(nèi)部定義的age和name都是類屬性。(1)類屬性的訪問類屬性是類和對(duì)象所共有的屬性,它可以被類訪問,也可以被類實(shí)例化的所有對(duì)象訪問。student=Student()print(student.age)print(Student.age)示例知識(shí)儲(chǔ)備5.類屬性(2)類屬性的修改類屬性可以通過類或?qū)ο筮M(jìn)行訪問,但只能通過類進(jìn)行修改。student=Student()print(Student.age)print(student.age)Student.age=18print(Student.age)print(student.age)student.age=19print(Student.age)print(student.age)示例知識(shí)儲(chǔ)備6.實(shí)例方法掌握實(shí)例方法的定義,能夠通過類的對(duì)象調(diào)用定義的實(shí)例方法學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備6.實(shí)例方法實(shí)例方法形似函數(shù),它定義在類內(nèi)部。第1個(gè)參數(shù)是self,表示對(duì)象本身。當(dāng)調(diào)用實(shí)例方法時(shí),self會(huì)自動(dòng)接收由系統(tǒng)傳遞的調(diào)用該方法的對(duì)象。實(shí)例方法只能通過對(duì)象調(diào)用。classDemo:

deffunction(self):

print("我是實(shí)例方法")demo=Demo()demo.function()

#正確的調(diào)用方式Demo.function()

#錯(cuò)誤的調(diào)用方式示例知識(shí)儲(chǔ)備6.實(shí)例方法一個(gè)類中可以定義多個(gè)實(shí)例方法,當(dāng)在實(shí)例方法中調(diào)用其他實(shí)例方法時(shí),需要以“self.實(shí)例方法名”的形式調(diào)用。classDemo:

deffunction(self):

print("我是實(shí)例方法")

deffunction2(self):

self.function()

#在實(shí)例方法中調(diào)用其他實(shí)例方法demo=Demo()demo.function2()示例任務(wù)分析本任務(wù)需要設(shè)計(jì)一個(gè)查詢信息類,該類可以命名為SearchEngine,同時(shí)根據(jù)任務(wù)描述設(shè)計(jì)出SearchEngine類的類圖。任務(wù)分析實(shí)現(xiàn)思路類屬性分析info用于存儲(chǔ)航天器和火箭的名稱、發(fā)射時(shí)間和簡介信息。定義一個(gè)包含北斗衛(wèi)星導(dǎo)航系統(tǒng)等相關(guān)信息的列表。方法分析接收用戶輸入的查詢名稱。通過for語句遍歷信息列表。通過for語句遍歷字典的方式取出查詢的具體信息。按照固定的格式輸出查詢的信息。任務(wù)實(shí)現(xiàn)1.創(chuàng)建項(xiàng)目Chapter07及01_spacecraft.py文件。2.在01_spacecraft.py文件中編寫代碼。根據(jù)類圖定義SearchEngine類。創(chuàng)建SearchEngine類的對(duì)象并調(diào)用方法search_info()。3.運(yùn)行01_spacecraft.py文件。實(shí)現(xiàn)步驟超市管理系統(tǒng)任務(wù)7-2任務(wù)描述目前很多超市都引入了超市管理系統(tǒng),超市工作人員利用計(jì)算機(jī),可以很方便的對(duì)超市的相關(guān)商品進(jìn)行添加、修改、查看等操作。超市管理系統(tǒng)任務(wù)描述【任務(wù)目標(biāo)】本任務(wù)要求基于面向?qū)ο缶幊痰乃枷刖帉懗绦?,?shí)現(xiàn)具有以上功能的超市管理系統(tǒng)。知識(shí)儲(chǔ)備1.實(shí)例屬性掌握實(shí)例屬性的基本使用,能夠訪問、修改實(shí)例屬性和動(dòng)態(tài)添加實(shí)例屬性學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備1.實(shí)例屬性通過“self.變量名”定義的屬性稱為實(shí)例屬性,實(shí)例屬性通常定義在類的__init__()方法(將在7.2.2節(jié)詳細(xì)介紹)中,也可以定義在其他方法中。另外,Python支持動(dòng)態(tài)添加實(shí)例屬性。classDog:

defdog_name(self):

='Buddy’示例dog=Dog()dog.dog_name()print()

#正確的方式print(D)

#錯(cuò)誤的方式(1)訪問實(shí)例屬性實(shí)例屬性只能通過對(duì)象進(jìn)行訪問。知識(shí)儲(chǔ)備1.實(shí)例屬性通過“self.變量名”定義的屬性稱為實(shí)例屬性,實(shí)例屬性通常定義在類的__init__()方法(將在7.2.2節(jié)詳細(xì)介紹)中,也可以定義在其他方法中。另外,Python支持動(dòng)態(tài)添加實(shí)例屬性。classDog:

defdog_name(self):

='Buddy’示例dog=Dog()dog.dog_name()

print()

='candy’#修改實(shí)例屬性

print()(2)修改實(shí)例屬性實(shí)例屬性通過對(duì)象進(jìn)行修改。知識(shí)儲(chǔ)備1.實(shí)例屬性通過“self.變量名”定義的屬性稱為實(shí)例屬性,實(shí)例屬性通常定義在類的__init__()方法(將在7.2.2節(jié)詳細(xì)介紹)中,也可以定義在其他方法中。另外,Python支持動(dòng)態(tài)添加實(shí)例屬性。classDog:

defdog_name(self):

='Buddy’示例dog=Dog()……dog.age=3#動(dòng)態(tài)添加實(shí)例屬性print(dog.age)(3)動(dòng)態(tài)添加實(shí)例屬性Python支持在類的外部使用對(duì)象動(dòng)態(tài)地添加實(shí)例屬性。知識(shí)儲(chǔ)備2.__init__()方法掌握__init__()方法的使用,能夠在__init__()方法中定義實(shí)例屬性學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備2.__init__()方法每個(gè)類都有一個(gè)默認(rèn)的構(gòu)造方法__init__(),該方法負(fù)責(zé)在創(chuàng)建對(duì)象時(shí)對(duì)對(duì)象進(jìn)行初始化。如果在定義類時(shí)顯式地定義了__init__()方法,則創(chuàng)建對(duì)象時(shí)Python解釋器會(huì)調(diào)用顯式定義的__init__()方法。如果定義類時(shí)沒有顯式定義__init__()方法,那么Python解釋器會(huì)調(diào)用默認(rèn)的__init__()方法。知識(shí)儲(chǔ)備2.__init__()方法__init__()方法按照參數(shù)的有無(self除外)可分為有參構(gòu)造方法和無參構(gòu)造方法。當(dāng)使用無參構(gòu)造方法創(chuàng)建對(duì)象時(shí),所有對(duì)象的同一屬性都有相同的初始值。當(dāng)使用有參構(gòu)造方法創(chuàng)建對(duì)象時(shí),所有對(duì)象的同一屬性可以有不同的初始值。classCar:

def__init__(self):

self.color="紅色"

defdrive(self):

print(f"車的顏色:{self.color}")無參構(gòu)造方法classCar:

def__init__(self,color):

self.color=color

defdrive(self):

print(f"車的顏色:{self.color}")有參構(gòu)造方法知識(shí)儲(chǔ)備3.類方法掌握類方法的定義與使用,能夠在類中定義類方法并使用學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備3.類方法classCar:

@classmethod

defstop(cls):

print("我是類方法")示例@classmethod

def類方法名(cls):方法體語法格式類方法是定義在類內(nèi)部、使用裝飾器@classmethod修飾的方法。知識(shí)儲(chǔ)備3.類方法car=Car()

car.stop()Car.stop()示例類方法可以通過類和對(duì)象調(diào)用。classCar:

wheels=3

@classmethod

defstop(cls):

print(cls.wheels)

cls.wheels=4

print(cls.wheels)示例使用cls訪問和修改類屬性的值。知識(shí)儲(chǔ)備4.靜態(tài)方法

掌握靜態(tài)方法的定義與使用,能夠在類中定義靜態(tài)方法并使用學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備4.靜態(tài)方法classCar:

@staticmethod

deftest():

print("我是靜態(tài)方法")

示例class類名:@staticmethoddef靜態(tài)方法名():

方法體語法格式靜態(tài)方法是定義在類內(nèi)部、使用裝飾器@staticmethod修飾的方法。知識(shí)儲(chǔ)備4.靜態(tài)方法car=Car()

car.test()Car.test()示例靜態(tài)方法可以通過類和對(duì)象調(diào)用。classCar:

wheels=3

@staticmethod

deftest():

print("我是靜態(tài)方法")

print(f"類屬性的值為

{Car.wheels}")car=Car()car.test()示例靜態(tài)方法內(nèi)部不能直接訪問屬性或調(diào)用方法,但可以使用類名訪問類屬性或調(diào)用類方法。任務(wù)分析本任務(wù)需要設(shè)計(jì)一個(gè)代表超市管理系統(tǒng)的類,該類被命名為MarketManage,同時(shí)根據(jù)任務(wù)描述中超市管理系統(tǒng)的功能設(shè)計(jì)出MarketManage類的類圖。任務(wù)分析實(shí)現(xiàn)思路屬性分析屬性u(píng)sername和password的初始值分別為admin和12345。屬性goods_info表示商品數(shù)據(jù)列表。方法分析function_display()方法用于展示功能選項(xiàng)。login()方法用于實(shí)現(xiàn)用戶登錄操作。show_goods()方法用于向用戶展示超市管理系統(tǒng)中所有的商品數(shù)據(jù)。add_goods()方法用于向超市管理系統(tǒng)中添加商品數(shù)據(jù)。任務(wù)分析實(shí)現(xiàn)思路②方法分析modify_goods()方法用于修改超市管理系統(tǒng)中的商品數(shù)據(jù)。statistics()方法用于將超市管理系統(tǒng)中所有商品數(shù)據(jù)按照銷量從高到低進(jìn)行排序。modify_pwd()方法用于修改超市管理系統(tǒng)的初始用戶名和密碼。main()方法作為程序的入口,用于調(diào)用超市管理系統(tǒng)的各個(gè)功能。

任務(wù)實(shí)現(xiàn)1.在Chapter07項(xiàng)目中創(chuàng)建02_MarketManage.py文件。2.在02_MarketManage.py文件中編寫代碼。定義MarketManage類,在該類中定義屬性。定義function_display()方法。定義login()方法。定義show_goods()方法。定義add_goods()方法。定義modify_goods()方法。定義statistics()方法。定義modify_pwd()方法。定義main()方法。創(chuàng)建MarketManage類的對(duì)象調(diào)用實(shí)例方法main()。

3.運(yùn)行02_MarketManage.py文件。實(shí)現(xiàn)步驟考勤系統(tǒng)任務(wù)7-3任務(wù)描述考勤系統(tǒng)用于管理公司員工的上下班考勤,根據(jù)員工的考勤記錄發(fā)放相應(yīng)的薪資,該系統(tǒng)會(huì)記錄員工的簽到時(shí)間、簽退時(shí)間和考勤記錄??记谙到y(tǒng)任務(wù)描述【任務(wù)目標(biāo)】本任務(wù)要求基于面向?qū)ο缶幊痰乃枷刖帉懗绦颍瑢?shí)現(xiàn)具備以上功能的考勤系統(tǒng)。知識(shí)儲(chǔ)備1.私有成員掌握私有屬性和私有方法,能夠在類中添加和使用私有屬性和私有方法學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備1.私有成員類的成員(包括前面介紹的屬性和方法)默認(rèn)是類的公有成員,它們可以在類的外部通過類或?qū)ο箅S意地訪問,若類中包含一些核心數(shù)據(jù),這樣顯然不夠安全。為了保證類中數(shù)據(jù)的安全,Python支持定義私有成員,這種方式在一定程度上限制外部對(duì)類成員的訪問。Python中的私有成員包括私有屬性和私有方法。

知識(shí)儲(chǔ)備1.私有成員(1)私有屬性Python中通過在屬性名稱的前面添加雙下畫線“_

_”的方式來表示私有屬性。私有屬性在類的內(nèi)部可以直接訪問,在類的外部不能直接訪問,但可以通過調(diào)用類的公有方法的方式進(jìn)行訪問。classCar:

__wheels=4

def__init__(self):

self.__brand='大眾‘

defcar_info(self):

print(self.__brand)

print(Car.__wheels)示例car=Car()print(car.__wheels)

print(car.__brand)car.car_info()程序運(yùn)行這兩行代碼會(huì)出現(xiàn)錯(cuò)誤,說明類外部無法直接訪問類內(nèi)部的私有屬性知識(shí)儲(chǔ)備1.私有成員(2)私有方法Python中通過在方法名稱的前面添加雙下畫線“__”的方式來表示私有方法。私有方法只能在類的內(nèi)部使用,無法在類外部使用。classCar:

__wheels=4

def__init__(self):

self.__brand='大眾'

def__data(self):

print('內(nèi)部數(shù)據(jù)')

defcar_info(self):

print(self.__brand)

print(Car.__wheels)

self.__data()示例car=Car()car.__data()car.car_info()

程序運(yùn)行這一行代碼會(huì)出現(xiàn)錯(cuò)誤,說明類外部無法訪問類內(nèi)部的私有方法知識(shí)儲(chǔ)備2.封裝熟悉封裝的特性,能夠?qū)崿F(xiàn)類的封裝

學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備2.封裝封裝是面向?qū)ο缶幊痰闹匾匦灾?,它的基本思想是?duì)外隱藏類的細(xì)節(jié),提供用于訪問類成員的公開接口。如此,類的外部無須知道類的實(shí)現(xiàn)細(xì)節(jié),只需要使用公開接口便可訪問類的內(nèi)容,這在一定程度上保證了類內(nèi)數(shù)據(jù)的安全。知識(shí)儲(chǔ)備2.封裝為了契合封裝思想,在定義類時(shí)需要滿足以下兩點(diǎn)要求。(1)將屬性聲明為私有屬性。(2)添加兩個(gè)供外界調(diào)用的公有方法,分別用于設(shè)置或獲取私有屬性的值。知識(shí)儲(chǔ)備2.封裝classPerson:

def__init__(self,name):

=name

self.__age=1

defset_age(self,new_age):

if0<new_age<=120:

self.__age=new_age

defget_age(self):

returnself.__age

示例person=Person("小明")person.set_age(20)

print(f"年齡為{person.get_age()}歲")任務(wù)分析本任務(wù)需要基于面向?qū)ο缶幊痰乃枷雽?shí)現(xiàn)考勤系統(tǒng),我們可以設(shè)計(jì)一個(gè)代表考勤系統(tǒng)的WorkAttendance類,設(shè)計(jì)WorkAttendance類的類圖。任務(wù)分析實(shí)現(xiàn)思路屬性分析__sign_in、__sign_out、__info都被定義為私有屬性屬性__info表示員工信息列表,該列表的格式如下。

[{'姓名':'張三','工號(hào)':'001','簽到時(shí)間':XXXX,'簽退時(shí)間':XXXX},{'姓名':'李四','工號(hào)':'002','簽到時(shí)間':XXXX,'簽退時(shí)間':XXXX}]任務(wù)分析實(shí)現(xiàn)思路方法分析function_display)方法僅用于展示考勤系統(tǒng)所包含的功能,因此可將該功能定義為靜態(tài)方法。__sign_in_or_out()方法用于實(shí)現(xiàn)員工簽到和簽退功能。attendance()方法用于展示員工簽到時(shí)間和簽退時(shí)間。main()方法作為程序的入口,用于調(diào)用考勤系統(tǒng)的各個(gè)功能。任務(wù)實(shí)現(xiàn)1.在Chapter07項(xiàng)目中創(chuàng)建03_work_attendance.py文件。2.在03_work_attendance.py文件中編寫代碼。定義考勤系統(tǒng)類WorkAttendance,在該類中定義私有屬性。在WorkAttendance類中定義靜態(tài)方法function_display()。在WorkAttendance類中定義__sign_in_or_out()方法。在WorkAttendance類中定義attendance()方法。在WorkAttendance類中定義main()方法。創(chuàng)建WorkAttendance類的對(duì)象調(diào)用main()方法。3.運(yùn)行03_work_attendance.py文件。實(shí)現(xiàn)步驟人機(jī)猜拳游戲任務(wù)7-4任務(wù)描述在人機(jī)猜拳游戲中包含兩個(gè)角色,一是計(jì)算機(jī),二是玩家。計(jì)算機(jī)猜拳的手勢(shì)由計(jì)算機(jī)隨機(jī)決定,玩家猜拳的手勢(shì)由玩家決定。本任務(wù)要求編寫程序,完成符合上述規(guī)則的人機(jī)猜拳游戲。【任務(wù)目標(biāo)】知識(shí)儲(chǔ)備1.單繼承掌握單繼承的語法,能夠在類中實(shí)現(xiàn)單繼承學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備1.單繼承繼承是面向?qū)ο缶幊痰闹匾匦灾唬饕糜诿枋鲱惻c類之間的關(guān)系,在不改變?cè)蓄惖幕A(chǔ)上擴(kuò)展原有類的功能。若類與類之間具有繼承關(guān)系,被繼承的類稱為父類或基類,繼承其他類的類稱為子類或派生類,子類會(huì)自動(dòng)擁有父類的公有成員。知識(shí)儲(chǔ)備1.單繼承單繼承即子類只繼承一個(gè)父類?,F(xiàn)實(shí)生活中,波斯貓、折耳貓、短毛貓都屬于貓類,它們之間存在的繼承關(guān)系即為單繼承。知識(shí)儲(chǔ)備1.單繼承Python中單繼承的語法格式如下所示。class子類名(父類名):語法格式classCat(object):

def__init__(self,color):

self.color=color

defcry(self):

print("喵喵叫~")classScottishFold(Cat):

pass示例fold=ScottishFold("灰色")print(f"{fold.color}的折耳貓")fold.cry()知識(shí)儲(chǔ)備1.單繼承子類不會(huì)擁有父類的私有成員,也不能訪問父類的私有成員。classCat(object):

def__init__(self,color):

self.color=color

self.__age=1

defwalk(self):

print("走貓步~")

def__test(self):

print("父類的私有方法")示例print(fold.__age)fold.__test()程序運(yùn)行這兩行代碼會(huì)出現(xiàn)錯(cuò)誤,說明子類繼承父類后不會(huì)擁有父類的私有成員知識(shí)儲(chǔ)備2.多繼承掌握多繼承的語法,能夠在類中實(shí)現(xiàn)多繼承學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備2.多繼承現(xiàn)實(shí)生活中很多事物是多個(gè)事物的組合,它們同時(shí)具有多個(gè)事物的特征或行為。比如沙發(fā)床是沙發(fā)與床的組合,既可以折疊成沙發(fā)的形狀,也可以展開成床的形狀。房車是房屋和汽車的組合,既具有房屋的居住功能,也具有汽車的行駛功能。知識(shí)儲(chǔ)備2.多繼承程序中的一個(gè)類也可以繼承多個(gè)類,如此子類具有多個(gè)父類,也自動(dòng)擁有所有父類的公有成員。class子類名(父類名1,父類名2,...):語法格式classHouse(object):

deflive(self):

print("提供居住功能")classCar(object):

defdrive(self):

print("提供行駛功能")classTouringCar(House,Car):

pass示例tour_car=TouringCar()tour_car.live()tour_car.drive()知識(shí)儲(chǔ)備2.多繼承試想一下,如果House類和Car類中有一個(gè)同名的方法,那么子類會(huì)調(diào)用哪個(gè)父類的同名方法呢?知識(shí)儲(chǔ)備2.多繼承classHouse(object):

deflive(self):

print("提供居住功能")

deftest(self):

print("House類測(cè)試")House類classCar(object):

defdrive(self):

print("提供行駛功能")

deftest(self):

print("Car類測(cè)試")Car類tour_car=TouringCar()tour_car.live()tour_car.drive()tour_car.test()main示例如果子類繼承的多個(gè)父類是平行關(guān)系的類,那么子類先繼承哪個(gè)類,便會(huì)先調(diào)用哪個(gè)類的方法。知識(shí)儲(chǔ)備3.重寫

掌握重寫的方式,能夠在子類中實(shí)現(xiàn)父類方法的重寫學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備3.重寫Python中實(shí)現(xiàn)方法重寫的方式非常簡單,只要在子類中定義與父類方法同名的方法,在方法中按照子類需求重新編寫功能代碼即可。classFelines:

defspeciality(self):

print("貓科動(dòng)物特長是爬樹")classCat(Felines):

name=“貓”

defspeciality(self):

print(f'{}會(huì)抓老鼠')

print(f'{}會(huì)爬樹')示例cat=Cat()cat.speciality()知識(shí)儲(chǔ)備4.super()函數(shù)掌握super()函數(shù)的使用,能夠通過super()函數(shù)調(diào)用父類中被重寫的方法學(xué)習(xí)目標(biāo)知識(shí)儲(chǔ)備4.super()函數(shù)如果子類重寫了父類的方法,仍希望調(diào)用父類中的同名方法,該如何實(shí)現(xiàn)呢?知識(shí)儲(chǔ)備4.super()函數(shù)Python中提供了一個(gè)super()函數(shù),該函數(shù)可以調(diào)用父類中被重寫的方法。classCat(Felines):

name="貓"

defspecial

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論