版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章
面向?qū)ο箢惡蛯?duì)象繼承類的方法模塊思維導(dǎo)圖知識(shí)目標(biāo)掌握掌握掌握理解類和對(duì)象的基本概念12掌握類方法的定義、調(diào)用掌握模塊的自定義和導(dǎo)入操作4初步掌握類的繼承3技能目標(biāo)掌握掌握掌握熟練掌握類和對(duì)象的基礎(chǔ)編程應(yīng)用12掌握類方法的編程應(yīng)用熟練掌握模塊的編程應(yīng)用4初步學(xué)會(huì)類繼承的編程應(yīng)用3思政目標(biāo)
1.
理解傳承與創(chuàng)新的關(guān)系,領(lǐng)會(huì)“在傳承中創(chuàng)新,在創(chuàng)新中發(fā)展”含義。
2.
學(xué)習(xí)老一輩科技工作者矢志創(chuàng)新攻關(guān)、科技自立自強(qiáng)的價(jià)值追求。
3.
通過(guò)“我國(guó)第一臺(tái)巨型計(jì)算機(jī)‘銀河’是如何誕生的”閱讀材料的學(xué)習(xí),深刻理解二十大報(bào)告“集聚力量進(jìn)行原創(chuàng)性引領(lǐng)性科技攻關(guān),堅(jiān)決打贏關(guān)鍵核心技術(shù)攻堅(jiān)戰(zhàn)”的內(nèi)涵和意義。目錄類的方法5.25.1類和對(duì)象5.3繼承5.4模塊知識(shí)架構(gòu)5.1類和對(duì)象1類的定義2創(chuàng)建和使用對(duì)象3學(xué)生實(shí)踐練習(xí)5.1類和對(duì)象1
類的定義
類是用來(lái)描述具有相同的屬性和方法的對(duì)象的集合,它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法,對(duì)象是類的實(shí)例。class類名:'類的幫助信息'#類文檔字符串
class_suite#類體
類的幫助信息可以通過(guò)“類名.__doc__”查看,類體class_suite由類成員、方法和數(shù)據(jù)屬性組成。Python中類的特殊屬性見(jiàn)表5.1?!菊Z(yǔ)法】5.1類和對(duì)象1
類的定義
【示例5.1】定義一個(gè)Employee員工類#創(chuàng)建員工類classEmployee:"""屬性"""name=""salary=""#構(gòu)造方法def__init__(self,name,salary):"""初始化屬性name和salary"""=nameself.salary=salary#定義顯示員工信息的方法defdisplayEmployee(self):"""輸出員工姓名和工資"""print("姓名:%s,工資:%d"%(,self.salary))5.1類和對(duì)象1
類的定義
在上述定義的員工類中,需要注意以下4點(diǎn):
(1)類似“"""屬性"""”格式的內(nèi)容為文檔字符串,文檔字符串是Python程序中一個(gè)很重要的工具,一般為重要的函數(shù)描述,對(duì)理解程序文檔和代碼很有幫助。
(2)類中定義的函數(shù)稱為方法,函數(shù)的一切特性都由方法體現(xiàn),類和方法唯一的區(qū)別是方法的調(diào)用方式。
(3)__init__()方法是類的構(gòu)造方法,Python中通過(guò)實(shí)現(xiàn)__init__()方法來(lái)初始化對(duì)象。當(dāng)一個(gè)對(duì)象被創(chuàng)建時(shí),Python首先需要?jiǎng)?chuàng)建一個(gè)空對(duì)象,然后為這個(gè)新對(duì)象調(diào)用__init__()方法。在員工類的__init__()方法中,包含self、name和salary三個(gè)形參,注意形參self必不可少,因?yàn)閯?chuàng)建實(shí)例對(duì)象時(shí),Python會(huì)自動(dòng)傳入實(shí)參self,讓實(shí)例能夠訪問(wèn)類中的屬性和方法。因此,創(chuàng)建員工實(shí)例對(duì)象時(shí),僅需傳遞name和salary兩個(gè)參數(shù)值。5.1類和對(duì)象1
類的定義
(4)和self.salary都有前綴self,以self為前綴的變量可以供類中的所有方法使用,還可以通過(guò)實(shí)例訪問(wèn)這些變量。“=name”表示獲取形參name值并存儲(chǔ)到類中定義的name屬性中,然后關(guān)聯(lián)到當(dāng)前創(chuàng)建的實(shí)例。
(5)員工類中還定義了顯示員工信息的displayEmployee()方法,該方法不需要傳遞參數(shù),因此只有一個(gè)形參self,self的作用與構(gòu)造方法中的形參self作用一致。5.1類和對(duì)象2
創(chuàng)建和使用對(duì)象
類定義完畢之后,不能直接進(jìn)行操作,因?yàn)轭愂浅橄蟮母拍睢P枰獙?shí)例化類來(lái)創(chuàng)建類的具體對(duì)象。對(duì)象是實(shí)際的實(shí)體,每一個(gè)對(duì)象都是類的一個(gè)具體的實(shí)例。在Java語(yǔ)言中,使用關(guān)鍵字“new”來(lái)創(chuàng)建,而在Python中并沒(méi)有這個(gè)關(guān)鍵字?!菊Z(yǔ)法】對(duì)象名=類名([構(gòu)造方法的參數(shù)])
在Python程序中,使用__init__()方法作為構(gòu)造方法。通過(guò)對(duì)象名調(diào)用類中的屬性或方法,需要使用“.”運(yùn)算符,格式如下:(1)屬性的調(diào)用,使用“對(duì)象名.屬性名”。(2)方法的調(diào)用,使用“對(duì)象名.方法名([參數(shù)])”5.1類和對(duì)象2
創(chuàng)建和使用對(duì)象
【示例5.2】創(chuàng)建示例5.1中Employee員工類的對(duì)象,并調(diào)用該類中的方法。emp1=Employee("張小明",2500)#創(chuàng)建Employee員工對(duì)象print("員工姓名為:",)print("員工工資為:",emp1.salary)emp1.displayEmployee()#調(diào)用類中的displayEmployee方法#創(chuàng)建Employee員工對(duì)象emp2=Employee("",2200)="王小燕"#給對(duì)象的name屬性重新賦值print("員工姓名為:",)emp2.displayEmployee()#調(diào)用類中的displayEmployee方法5.1類和對(duì)象3
學(xué)生實(shí)踐練習(xí)
1.需求說(shuō)明
定義一個(gè)歌曲的類,該類包含三個(gè)屬性,分別為歌曲名稱(name)、歌手(singer)和歌曲類型(type)。定義一個(gè)輸出歌曲詳細(xì)信息的方法,創(chuàng)建兩個(gè)歌曲對(duì)象,并對(duì)歌曲對(duì)象的屬性賦值,最后輸出兩個(gè)歌曲對(duì)象的詳細(xì)信息。
2.實(shí)現(xiàn)思路
(1)定義一個(gè)類名為Song的歌曲類。
(2)在類中定義三個(gè)屬性和一個(gè)輸出歌曲詳細(xì)信息的方法。
(3)創(chuàng)建兩個(gè)歌曲對(duì)象,給對(duì)象的屬性賦值,并調(diào)用輸出歌曲詳細(xì)信息的方法。知識(shí)架構(gòu)5.2類的方法1方法的定義2方法的調(diào)用3構(gòu)造方法4學(xué)生實(shí)踐練習(xí)5.2類和方法1
方法的定義
在類中,方法的定義和函數(shù)的定義類似,同樣以def關(guān)鍵字開頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào)()。不過(guò)在類中的方法必須有個(gè)附加參數(shù)self,參數(shù)self指向當(dāng)前對(duì)象。class類名:def方法名(self,[參數(shù)]):方法的執(zhí)行語(yǔ)句
例如,定義一個(gè)Phone手機(jī)類,在類中定義手機(jī)名稱和打電話的方法,代碼如下:【語(yǔ)法】classPhone:
name=""defcall(self,name):
print(name,"打電話")
在上述代碼中,類的方法只定義沒(méi)有被調(diào)用,因此沒(méi)有結(jié)果輸出。5.2類和方法2
方法的調(diào)用
類中的方法調(diào)用要使用“.”運(yùn)算符,其具體格式為“對(duì)象名.方法名([參數(shù)])”。對(duì)象名.方法名([參數(shù)])
例如,調(diào)用5.2.1節(jié)中的call方法,代碼如下:【語(yǔ)法】phone1=Phone()phone1.call("王小明")phone2=Phone()phone2.call("張飛燕")5.2類和方法3
構(gòu)造方法
在類定義中有一個(gè)特殊的方法,此方法的名稱為__init__,在創(chuàng)建對(duì)象時(shí)用于對(duì)成員變量進(jìn)行初始化,此類方法被稱為構(gòu)造方法。在一個(gè)類中有且只能有一個(gè)構(gòu)造方法,在創(chuàng)建對(duì)象時(shí),對(duì)象名括號(hào)中傳入的參數(shù)必須和構(gòu)造函數(shù)中定義的參數(shù)保持一致。class類名:def__init__(self):構(gòu)造方法的執(zhí)行語(yǔ)句
在上述語(yǔ)法中,self參數(shù)必不可少,在創(chuàng)建對(duì)象時(shí),會(huì)自動(dòng)傳入實(shí)參self。每個(gè)與類相關(guān)的方法在創(chuàng)建對(duì)象時(shí),都會(huì)自動(dòng)傳入實(shí)參self,讓實(shí)例對(duì)象能夠訪問(wèn)類中的屬性和方法【語(yǔ)法】5.2類和方法3
構(gòu)造方法
例如,定義一個(gè)歌手類,在構(gòu)造方法中對(duì)歌手名稱和地區(qū)屬性進(jìn)行初始化,代碼如下:classSinger:name=""area=""def__init__(self,name,area):=nameself.area=areasinger1=Singer("陳奕迅","中國(guó)香港")print("歌手:%s\t地區(qū):%s"%(,singer1.area))singer2=Singer("張杰","中國(guó)")print("歌手:%s\t地區(qū):%s"%(,singer2.area))5.2類和方法4
學(xué)生實(shí)踐練習(xí)
1.需求說(shuō)明
在許多系統(tǒng)中都有對(duì)用戶的管理功能。請(qǐng)模擬系統(tǒng)的用戶管理功能,分別查看用戶列表、添加用戶、根據(jù)ID修改用戶及根據(jù)ID刪除用戶記錄,并模擬根據(jù)用戶名和密碼進(jìn)行登錄。要求如下:(1)在控制臺(tái)選擇操作類型,1表示查詢,2表示添加,3表示修改,4表示刪除,5表示登錄。(2)選擇相應(yīng)操作類型后,提示輸入用戶名和密碼等信息后,實(shí)現(xiàn)相應(yīng)的操作,運(yùn)行結(jié)果如圖5.5所示。5.2類和方法4
學(xué)生實(shí)踐練習(xí)
5.2類和方法4
學(xué)生實(shí)踐練習(xí)
2.實(shí)現(xiàn)思路(1)將用戶信息根據(jù)編號(hào)保存在一個(gè)字典的對(duì)象中。(2)定義一個(gè)用戶類,該類包含用戶編號(hào)、用戶名和密碼3個(gè)屬性,以及定義登錄和顯示用戶信息的方法。(3)創(chuàng)建一個(gè)循環(huán),輸入要選擇的操作類型,如果是添加用戶,則創(chuàng)建一個(gè)用戶對(duì)象并保存到字典對(duì)象中,鍵為隨機(jī)產(chǎn)生的用戶ID。(4)選擇查詢操作,則循環(huán)遍歷字典的值列表,然后調(diào)用用戶對(duì)象的顯示用戶信息的方法。(5)選擇修改操作,則輸入要修改的用戶編號(hào)和修改后的用戶名與密碼,根據(jù)修改的用戶編號(hào)找到用戶對(duì)象,對(duì)用戶對(duì)象中的用戶名和密碼屬性重新賦值,就可以實(shí)現(xiàn)修改操作。5.2類和方法4
學(xué)生實(shí)踐練習(xí)
(6)選擇刪除操作,則需要輸入刪除的用戶編號(hào),使用del關(guān)鍵字刪除對(duì)應(yīng)的用戶對(duì)象。(7)選擇登錄操作,則需要輸入用戶名和密碼,循環(huán)遍歷所有用戶對(duì)象,調(diào)用用戶對(duì)象的登錄方法進(jìn)行用戶登錄,如果登錄成功,則終止循環(huán),提示用戶登錄成功。運(yùn)行結(jié)果如圖5.5所示。知識(shí)架構(gòu)5.3繼承1繼承的概念2繼承的使用3學(xué)生實(shí)踐練習(xí)5.3
繼承1
繼承的概念
學(xué)習(xí)繼承之前,首先看一個(gè)例子,假設(shè)定義了Person類,該類中包含名稱、年齡屬性和吃飯的方法。再定義了一個(gè)Student學(xué)生類,該類同樣包含名稱、年齡屬性和吃飯的方法,除此之外,Student學(xué)生類還定義了學(xué)習(xí)的方法,代碼如下:classPerson:
'''人的類'''
name=""
age=0
defeat(self):
print(,"正在吃飯")classStudent:
'''學(xué)生類'''
name=""
age=0
defeat(self):
print(,"正在吃飯")
defstudy(self):
print(,"正在學(xué)習(xí)")per1=Person()="張三"per1.eat()stu1=Student()="小明"stu1.study()
定義Person類并調(diào)用的運(yùn)行結(jié)果如圖5.6所示。5.3
繼承1
繼承的概念
上述的兩個(gè)類中存在大量的重復(fù)代碼,不能實(shí)現(xiàn)代碼的復(fù)用,同時(shí)不易于程序的擴(kuò)展。如果將每個(gè)類中相同的代碼抽取出來(lái)建立一個(gè)公共類,提供給其他類復(fù)用,這樣會(huì)大量減少重復(fù)代碼,實(shí)現(xiàn)代碼的復(fù)用。
編寫類時(shí),通過(guò)繼承可大大提高代碼的復(fù)用性,減少代碼量,便于程序的后期維護(hù)。一個(gè)類繼承另一個(gè)類時(shí),它將自動(dòng)獲得另一個(gè)類的所有屬性和方法。原有的類稱為父類,而新類稱為子類,子類繼承其父類的所有屬性和方法,同時(shí)還可以定義自己的屬性和方法。
繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)重要特征,它通過(guò)繼承原有類派生出子類,進(jìn)而構(gòu)造出更為復(fù)雜的子類,子類既有新定義的行為特征,又繼承了原有類的行為特征。
Python中只要滿足is-a的關(guān)系都可以用繼承來(lái)表示。例如,老虎、獅子和熊貓都具有動(dòng)物的基本特征和行為,它們都是動(dòng)物;老虎、獅子和熊貓等與動(dòng)物都可以形成繼承的關(guān)系;小汽車、貨車和公共汽車都具有車的基本特征和行為,都可以與車形成繼承關(guān)系。5.3
繼承2
繼承的使用
實(shí)現(xiàn)繼承的類稱為子類,被繼承的類稱為父類,也稱為基類、超類。如果一個(gè)類繼承另外一個(gè)類,則需要在類定義的第一行中的類名的后面加圓括號(hào),在圓括號(hào)中的為父類的類名?!菊Z(yǔ)法】class類名(需要繼承的父類名稱):'''類的幫助信息'''#文檔字符串class_suite#類體class_suite由類成員、方法和數(shù)據(jù)屬性組成。5.3
繼承2
繼承的使用
1.子類的構(gòu)造方法__init__()
創(chuàng)建子類的實(shí)例時(shí),Python首先需要完成的任務(wù)是給父類的所有屬性賦值。因此,子類的構(gòu)造方法__init__()需要父類施以援手。
例如,創(chuàng)建Person類的構(gòu)造方法,Student學(xué)生類繼承自Person類,也定義構(gòu)造方法__init__(),代碼如下:classPerson:
name=""
age=0
#構(gòu)造方法
def__init__(self,name,age):
=name
self.age=age
defeat(self):
print(,"正在吃飯")classStudent(Person):#繼承自Person類
#子類的構(gòu)造方法
def__init__(self,name,age):
super().__init__(name,age)#使用super()函數(shù)關(guān)聯(lián)父類和子類5.3
繼承2
繼承的使用
在上述代碼中,Person類是父類,Student學(xué)生類是繼承自Person類的子類。Person類的構(gòu)造函數(shù)__init__()定義方式與一般構(gòu)造函數(shù)的定義方式相同,但是Student學(xué)生類的構(gòu)造函數(shù)必須使用super()函數(shù)實(shí)現(xiàn),super()函數(shù)是一個(gè)特殊的函數(shù),它能夠?qū)⒏割惡妥宇愱P(guān)聯(lián)起來(lái)。2.子類的屬性和方法
子類繼承自父類后,自動(dòng)具有父類的所有屬性和方法,除此之外,子類還可以定義自己的屬性和方法。
例如,實(shí)現(xiàn)Person類和Student學(xué)生類的繼承關(guān)系,并在Student學(xué)生類中定義“正在學(xué)習(xí)”的方法,代碼如下:5.3
繼承2
繼承的使用
classPerson:
name=""
age=0
#構(gòu)造方法
def__init__(self,name,age):
=name
self.age=age
defeat(self):
print(,"正在吃飯")classStudent(Person):#繼承自Person類
#子類的構(gòu)造方法
def__init__(self,name,age):
super().__init__(name,age)#使用super()函數(shù)關(guān)聯(lián)父類和子類
#子類自定義的方法
defstudy(self):
print(,"正在學(xué)習(xí)")per1=Person("張三",20)per1.eat()stu1=Student("小明",18)stu1.study()5.3
繼承2
繼承的使用
在Student學(xué)生類中自定義方法的運(yùn)行結(jié)果如圖5.7所示。
分析上述代碼可知,使用繼承后大量地減少了重復(fù)代碼,提高了代碼的復(fù)用,使程序變得更加容易維護(hù)。3.重寫父類的方法
對(duì)于父類的方法,只要不符合子類的使用需求,都可以對(duì)其進(jìn)行重寫。重寫父類某個(gè)方法時(shí),子類應(yīng)定義一個(gè)同名的方法。
例如,重寫父類Person類的“正在吃飯”方法,子類Student類重寫該方法為“正在吃午飯”,代碼如下:5.3
繼承2
繼承的使用
classPerson:
name=""
age=0
#構(gòu)造方法
def__init__(self,name,age):
=name
self.age=age
defeat(self):
print(,"正在吃飯")classStudent(Person):#繼承自Person類
#子類的構(gòu)造方法
def__init__(self,name,age):
super().__init__(name,age)#使用super()函數(shù)關(guān)聯(lián)父類和子類
#子類自定義的方法
defstudy(self):
print(,"正在學(xué)習(xí)")
#重寫正在吃飯的方法
defeat(self):
print(,"正在吃午飯")per1=Person("張三",20)per1.eat()stu1=Student("小明",18)stu1.eat()5.3
繼承2
繼承的使用
重寫父類方法的運(yùn)行結(jié)果如圖5.8所示。5.3
繼承3
學(xué)生實(shí)踐練習(xí)
1.需求說(shuō)明定義一個(gè)汽車類,該類包含名稱和顏色兩個(gè)屬性及駕駛的方法。定義一個(gè)卡車類繼承汽車類。定義顯示汽車信息的方法。2.實(shí)現(xiàn)思路
(1)定義一個(gè)類名為Car的汽車類,其中包含name和color兩個(gè)屬性,以及名稱為drive的駕駛方法。
(2)定義一個(gè)類名為Truck的卡車類。該類繼承汽車類,定義一個(gè)showCarInfo的方法輸出該車的信息。知識(shí)架構(gòu)5.4模塊1自定義模塊2導(dǎo)入模塊3學(xué)生實(shí)踐練習(xí)5.4模塊1
自定義模塊
在計(jì)算機(jī)程序的開發(fā)過(guò)程中,隨著程序代碼越寫越多,一個(gè)文件中的代碼就會(huì)越來(lái)越長(zhǎng),越來(lái)越不容易維護(hù),那么,如何解決這個(gè)問(wèn)題呢?
為了編寫可維護(hù)的代碼,我們對(duì)很多函數(shù)進(jìn)行分組,分別放到不同的文件中,這樣每個(gè)文件包含的代碼就相對(duì)較少,很多編程語(yǔ)言都采用這種組織代碼的方式。在Python中,一個(gè).py文件就稱為一個(gè)模塊(Module)。
模塊最大的優(yōu)勢(shì)是,首先,大大提高了代碼的可維護(hù)性;其次,編寫代碼不必從零開始。當(dāng)一個(gè)模塊編寫完畢后,就可以被其他地方引用。我們?cè)诰帉懗绦驎r(shí),也經(jīng)常引用其他模塊,包括Python內(nèi)置的模塊和來(lái)自第三方的模塊。
在Java語(yǔ)言中,使用包對(duì)各種Java文件進(jìn)行分類管理,同理,Python也可以使用包管理各種模塊文件,Python包的創(chuàng)建比較簡(jiǎn)單。在PyCharm工具中選擇“New”→“PythonPackage”創(chuàng)建一個(gè)Python的包,創(chuàng)建完成后在包中就生成了__init__.py。在不使用PyCharm的情況下,可以創(chuàng)建一個(gè)文件夾,在文件夾中創(chuàng)建__init__.py,也可以產(chǎn)生一個(gè)Python包。
使用模塊還可以避免函數(shù)名和變量名沖突。相同名字的函數(shù)和變量完全可以分別存在于不同的模塊中,因此,我們?cè)诰帉懩K時(shí),不必考慮名字會(huì)與其他模塊沖突,但是也要注意,盡量不要與內(nèi)置函數(shù)名沖突。5.4模塊1
自定義模塊
在Python中,每個(gè)Python文件都可以作為一個(gè)模塊,模塊的名字就是文件的名字。模塊的使用代碼如下。(1)創(chuàng)建calUtils.py文件,文件代碼如下:defcalMax(a,b):#計(jì)算兩個(gè)數(shù)的最大數(shù)
ifa>b:
returna
returnb
(2)在工程上右鍵單擊,在彈出的快捷菜單中選擇“New”→“PythonPackage”創(chuàng)建一個(gè)utils目錄,在該目錄下創(chuàng)建numUtils.py文件,文件代碼如下:importrandomdefconvert(str):#將字符串轉(zhuǎn)換為整數(shù)
returnint(str)defgetRandomNum():#獲取隨機(jī)數(shù)
returnint(random.uniform(0,1000))
在上述代碼中,一個(gè)Python文件表示一個(gè)模塊,上述代碼定義了calUtils和numUtils兩個(gè)模塊。5.4模塊2
導(dǎo)入模塊
在Python文件中使用同一目錄下另外一個(gè)Python文件中定義的方法時(shí),需要使用import關(guān)鍵字。模塊名和Python文件的名稱要相同。
【思考】當(dāng)目錄名或模塊名過(guò)長(zhǎng),或者不太容易理解時(shí),有沒(méi)有更好的解決辦法呢?1.使用import導(dǎo)入在導(dǎo)入Python模塊時(shí),可以將模塊名使用語(yǔ)句“as別名”的方式用別名代替?!菊Z(yǔ)法】import模塊名[as別名]模塊名(別名).方法名([參數(shù)])5.4模塊2
導(dǎo)入模塊
調(diào)用5.4.1節(jié)中的calUtils.py中的calMax()函數(shù),代碼如下:importcalUtilsprint("使用import導(dǎo)入:")num=calUtils.calMax(34,56)print("34和56的最大值為",num)#別名的方式importcalUtilsascalprint("使用import的別名導(dǎo)入:")num=cal.calMax(34,56)print("34和56的最大值為",num)使用import調(diào)用calUtils.py中的calMax()函數(shù)的運(yùn)行結(jié)果如圖5.10所示。5.4模塊2
導(dǎo)入模塊
2.使用from導(dǎo)入
有時(shí)只需要用到模塊中的某個(gè)函數(shù),只需引入該函數(shù)即可,此時(shí)可以通過(guò)語(yǔ)句“from模塊名import函數(shù)名1,函數(shù)名2,…”實(shí)現(xiàn)。如果需要導(dǎo)入模塊中的所有函數(shù),可以使用“*”操作符表示所有函數(shù)。它的語(yǔ)句為“from模塊名
import*”。【語(yǔ)法】from模塊名import函數(shù)名1[as別名1],函數(shù)名2[as別名2],…fromcalUtilsimportcalMax#或者使用fromcalUtilsimport*print("使用from導(dǎo)入:")num=calMax(34,56)print("34和56的最大值為",num)#別名的方式fromcalUtilsimportcalMaxascalprint("使用from的別名導(dǎo)入:")num=cal(34,56)print("34和56的最大值為",num)
調(diào)用5.4.1節(jié)中的calUtils.py文件中的calMax()函數(shù),代碼如下:5.4模塊2
導(dǎo)入模塊
使用from調(diào)用calUtils.py文件中的calMax()函數(shù)的運(yùn)行結(jié)果如圖5.11所示。
當(dāng)在一個(gè)Python文件中使用同一目錄下另外一個(gè)目錄下Python文件中定義的方法時(shí),需要使用“from文件名import文件名”的形式。5.4模塊2
導(dǎo)入模塊
3.導(dǎo)入外部目錄下模塊導(dǎo)入外部目錄下模塊的兩種方式如下。(1)第一種方式的語(yǔ)法。from目錄名稱import模塊名[as別名]模塊名(別名).方法名([參數(shù)])(2)第二種方式的語(yǔ)法。import目錄名稱.模塊名[as別名]目錄名稱.模塊名(別名).方法名([參數(shù)])5.4模塊2
導(dǎo)入模塊
例如,調(diào)用5.4.1節(jié)中的utils目錄下numUtils.py文件中的方法,代碼如下:fromutilsimportnumUtilsprint("整數(shù)轉(zhuǎn)換",numUtils.convert("34"))print("隨機(jī)數(shù):",numUtils.getRandomNum())#第二種方式importutils.numUtilsprint("整數(shù)轉(zhuǎn)換",utils.numUtils.convert("34"))print("隨機(jī)數(shù):",utils.numUtils.getRandomNum())#別名的方式importutils.numUtilsasnumprint("整數(shù)轉(zhuǎn)換",num.convert("34"))print("隨機(jī)數(shù):",num.getRandomNum())
調(diào)用utils目錄下numUtils.py文件中的方法的運(yùn)行結(jié)果如圖5.12所示。5.4模塊3
學(xué)生實(shí)踐練習(xí)
1.需求說(shuō)明
實(shí)現(xiàn)自定義模塊,要求如下:
(1)在工程目錄下新建StringUtils.py文件,該文件包含一個(gè)對(duì)象轉(zhuǎn)字符串的函數(shù)objToStr()。
(2)在工程目錄下新建目錄task,然后在task目錄下新建numUtils.py文件。在該文件中定義一個(gè)NumOperator的類,在類中包含添加函數(shù)add()和求多少次方的函數(shù)pow()。
(3)新建task5-4.py文件,在該文件中使用模塊導(dǎo)入的幾種方式,調(diào)用StringUtils.py文件中的objToStr()函數(shù)及訪問(wèn)numUtils.py文件中NumOperator類的三個(gè)方法。5.4模塊3
學(xué)生實(shí)踐練習(xí)
2.實(shí)現(xiàn)思路
(1)在工程目錄下新建StringUtils.py文件,使用系統(tǒng)提供的str()函數(shù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年北師大新版選擇性必修1物理下冊(cè)月考試卷含答案
- 2025年外研版九年級(jí)地理上冊(cè)階段測(cè)試試卷含答案
- 2025至2030年中國(guó)鋁合金山地車腳踏數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)蒟蒻凍粉數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年外研銜接版高二化學(xué)上冊(cè)月考試卷含答案
- 2025年北師大版選擇性必修1歷史下冊(cè)階段測(cè)試試卷含答案
- 2025至2030年中國(guó)相機(jī)塑膠配件數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)柔潤(rùn)香皂數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 戶外運(yùn)動(dòng)居間服務(wù)合同樣本
- 2025年新科版選修1地理上冊(cè)階段測(cè)試試卷含答案
- 2024年貴州省中考數(shù)學(xué)真題含解析
- 參考新醫(yī)大-中央財(cái)政支持地方高校發(fā)展專項(xiàng)資金建設(shè)規(guī)
- 《中醫(yī)內(nèi)科學(xué)關(guān)格》課件
- 2024年中國(guó)PCB板清洗劑市場(chǎng)調(diào)查研究報(bào)告
- 《紙管》規(guī)范要求
- 【數(shù)學(xué)】2021-2024年新高考數(shù)學(xué)真題考點(diǎn)分布匯
- 2024年育嬰師合同協(xié)議書
- 大班健康教案及教學(xué)反思《蜈蚣走路》
- 生活?yuàn)y課件教學(xué)課件
- 2023-2024學(xué)年廣東省廣州市番禺區(qū)八年級(jí)(上)期末英語(yǔ)試卷
- 山東省房屋市政工程安全監(jiān)督機(jī)構(gòu)人員業(yè)務(wù)能力考試題庫(kù)-上(單選題)
評(píng)論
0/150
提交評(píng)論