Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 代崴 第6章 - Python文件操作;第7章 - Python面向?qū)ο缶幊蘝第1頁
Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 代崴 第6章 - Python文件操作;第7章 - Python面向?qū)ο缶幊蘝第2頁
Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 代崴 第6章 - Python文件操作;第7章 - Python面向?qū)ο缶幊蘝第3頁
Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 代崴 第6章 - Python文件操作;第7章 - Python面向?qū)ο缶幊蘝第4頁
Python程序設(shè)計(jì)基礎(chǔ)教程(微課版) 課件 代崴 第6章 - Python文件操作;第7章 - Python面向?qū)ο缶幊蘝第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Python程序設(shè)計(jì)第6章Python文件操作學(xué)習(xí)目標(biāo)了解文本/二進(jìn)制文件識(shí)記文件打開模式掌握文件和目錄基本操作知識(shí)目標(biāo)能夠操作文本文件和CSV文件能夠完成基本目錄操作能力目標(biāo)數(shù)據(jù)完整性的重視良好組織結(jié)構(gòu)對(duì)提高效率和減少錯(cuò)誤的影響情感態(tài)度與價(jià)值觀文件概述01020403文本文件操作CSV文件操作目錄操作目

錄文件概述01020403文本文件操作CSV文件操作目錄操作目

錄文件分類文件操作函數(shù)文件:計(jì)算機(jī)系統(tǒng)中用于存儲(chǔ)信息的一種機(jī)制,允許將數(shù)據(jù)永久保存在磁盤或其他外存儲(chǔ)器上文本文件二進(jìn)制文件6.1文件概述120文本文件:保存字符編碼的文件ASCIIUNICODEUTF-8GBK*.txt、*.html/*.htm、*.json、*.log、*.ini、源代碼文件(*.py、*.cpp、*.java)6.1.1文件分類120二進(jìn)制文件:保存數(shù)據(jù)在內(nèi)存中的字節(jié)序列序列化:將內(nèi)存中的數(shù)據(jù)對(duì)象以字節(jié)序列寫入文件的過程反序列化:從文件中讀取字節(jié)序列再轉(zhuǎn)換成內(nèi)存數(shù)據(jù)對(duì)象的過程壓縮文件(*.zip、*.7z)可執(zhí)行文件(*.exe、*.dll、*.so)圖像文件(*.bmp、*.png、*.jpg)音視頻文件(*.mp3、*.mp4、*.avi)專有文件(*.dwg、*.psd、*.trec)6.1.1文件分類121內(nèi)置函數(shù)處理文本/二進(jìn)制文件open()read()、write()、……close()標(biāo)準(zhǔn)庫:csv、configparser、zipfile、pickle、sqlite3第三方庫:openpyxl、python-docx、OpenCV、librosa、Pillow6.1.2文件操作函數(shù)121文件概述01020403文本文件操作CSV文件操作目錄操作目

錄文本文件操作020403CSV文件操作目錄操作目

錄文件概述01打開文本文件讀/寫文本文件關(guān)閉文本文件Python使用“文件對(duì)象”與文本文件交互open()打開文件并獲取一個(gè)文件對(duì)象調(diào)用文件對(duì)象的方法讀寫內(nèi)容close()關(guān)閉文件6.2文本文件操作121open():打開文本文件并返回一個(gè)文件對(duì)象,以便進(jìn)行后續(xù)的操作file:要打開的文件路徑字符串,可以是絕對(duì)路徑,也可以是相對(duì)路徑(相對(duì)于當(dāng)前正在運(yùn)行的*.py文件)mode:可選,指定文件打開模式的字符串6.2.1打開文件121變量=open(file[,optional_params])f1=open('demo.txt')f2=open('E:/points.dat','rb')6.2.1打開文件122字符串說明讀寫模式'r'僅讀取(默認(rèn)),從文件頭開始讀取,如果文件不存在則報(bào)錯(cuò)'w'僅寫入,如果文件不存在則創(chuàng)建新的空文件,如果存在則清空文件內(nèi)容'x'排它性創(chuàng)建,如果文件已存在則報(bào)錯(cuò)'a'追加模式,如果文件不存在則創(chuàng)建新的空文件,如果存在則在末尾追加內(nèi)容'+'讀寫模式,可同時(shí)讀取和寫入,與r、w、x、a模式組合使用文件模式't'文本模式(默認(rèn)),以文本格式打開文件'b'二進(jìn)制模式,以二進(jìn)制格式打開文件readlines([hint])讀取文件的每一行,返回一個(gè)包含讀取行的列表hint:可選,控制讀取的行數(shù),不指定則讀取全部行6.2.2讀取文件122f=open('names.txt')lines=f.readlines()#lines是一個(gè)列表forlinlines:#l是一個(gè)字符串print(l.strip('\n'))示例6-2readline([size])讀取文件下一行中的size個(gè)字符并返回,未指定size默認(rèn)讀取整行適合文件較大的情況,循環(huán)調(diào)用處理多行數(shù)據(jù)6.2.2讀取文件122f=open('names.txt')line=f.readline()#line是一個(gè)字符串,包含一行的內(nèi)容whileline!='':print(line)line=f.readline()示例6-3全文按行處理時(shí),可直接遍歷文件對(duì)象,效果和循環(huán)調(diào)用readline()一樣6.2.2讀取文件123f=open('names.txt')forlinf:#l是一個(gè)字符串,包含一行的內(nèi)容print(l)示例6-4read([size])從文件中讀取size個(gè)字符,以一個(gè)字符串的形式返回未指定size默認(rèn)讀取所有內(nèi)容6.2.2讀取文件123f=open('names.txt','r')contents=f.read()#contents是一個(gè)字符串print(contents)示例6-4writelines(string_list)接收一個(gè)所有元素均為字符串的列表對(duì)象作為參數(shù),依次將每個(gè)字符串寫入文件該方法不會(huì)自動(dòng)在每個(gè)字符串后添加換行符6.2.3寫入文件123f=open('writelines_demo.txt','w')names=['Danie','Kitty','Branda']f.writelines(names)示例6-7close():關(guān)閉文件確保所有的數(shù)據(jù)都被正確地寫入到磁盤釋放系統(tǒng)資源6.2.4關(guān)閉文件124f=open('writelines_demo.txt','w')names=['Danie','Kitty','Branda']f.writelines(names)f.close()示例6-8with子句:確保文件在代碼塊執(zhí)行完畢后自動(dòng)關(guān)閉6.2.4關(guān)閉文件124withopen('writelines_demo.txt','w')asf:

names=['Danie','Kitty','Branda']

f.writelines(names)示例6-9文件概述01020403文本文件操作CSV文件操作目錄操作目

錄CSV文件操作0304目錄操作目

錄文件概述0102文本文件操作csv模塊讀/寫CSV文件CSV文件:CommaSeparatedValues,純文本文件,用于存儲(chǔ)表格數(shù)據(jù)可以包含任意數(shù)量的記錄一般情況下一行一條記錄,不同字段用逗號(hào)分隔可與excel文件互相轉(zhuǎn)換,也可在Excel軟件中編輯6.3CSV文件操作131內(nèi)置csv模塊,可直接導(dǎo)入讀寫CSV文件之前需要通過open()獲取文件對(duì)象6.3.1導(dǎo)入模塊131importcsvcsv.reader():創(chuàng)建一個(gè)csv閱讀器對(duì)象,該對(duì)象是可迭代對(duì)象,通過遍歷該對(duì)象處理文件的每一行6.3.2讀取文件131importcsvwithopen('csv_read_demo.csv')asf:reader=csv.reader(f)next(reader)#跳過標(biāo)題行forrowinreader:sex='女'ifrow[2]=='F'else'男'print(f'{row[0]},{sex},學(xué)號(hào)是{row[1]}')示例6-14csv.writer():創(chuàng)建一個(gè)csv寫入器對(duì)象,通過該對(duì)象的writerow()/writerows()寫入內(nèi)容6.3.3寫入文件132importcsvtitle=['姓名','職業(yè)','年齡']rows=[['張三','飛行員',32],['李四','工程師',28],['錢五','插畫師',26]]withopen('write_csv_demo.csv','w',newline='')asf:writer=csv.writer(f)writer.writerow(title)writer.writerows(rows)示例6-15文件概述01020403文本文件操作CSV文件操作目錄操作目

錄目錄操作04目

錄文件概述0102文本文件操作03CSV文件操作移動(dòng)/復(fù)制/刪除文件創(chuàng)建/刪除/遍歷目錄文件路徑操作目錄是組織和管理文件的關(guān)鍵組件shutil模塊os模塊6.4目錄操作136shutil模塊move():移動(dòng)文件,移動(dòng)后原位置的文件不存在copy():拷貝文件,復(fù)制后不會(huì)更改原文件若目標(biāo)位置已經(jīng)存在同名文件,該文件將被覆蓋6.4.1文件移動(dòng)和復(fù)制136importshutilsrc1='src_files/230114.log'#原文件路徑dst1='dst_files/230114.log'#目標(biāo)文件路徑shutil.move(src1,dst1)#移動(dòng)文件src2='src_files/230115.log'#原文件路徑dst2='dst_files/230115.log'#目標(biāo)文件路徑shutil.copy(src2,dst2)#復(fù)制文件示例6-16os模塊remove():刪除文件,操作不可逆6.4.2文件刪除136importosfile_path='src_files/230116.log'os.remove(file_path)示例6-17os模塊mkdir():創(chuàng)建目錄rmdir():刪除目錄6.4.3目錄創(chuàng)建和刪除136importosdir_path='test_dir1'os.mkdir(dir_path)os.rmdir(dir_path)示例6-18os.walk():遞歸遍歷指定目錄每次返回一個(gè)三元組:(dirpath,dirnames,filenames)dirpath:當(dāng)前正在遍歷的目錄路徑dirnames:該目錄下的子目錄列表filenames:該目錄下的非目錄文件列表6.4.4目錄遍歷136importosforroot,dirs,filesinos.walk('E:/src/'):forfileinfiles:print(os.path.join(root,file))示例6-19os.listdir():返回指定目錄下所有文件和子目錄的列表,不遞歸遍歷子目錄6.4.4目錄遍歷137importosfiles=os.listdir('../chapter06')forfileinfiles:print(file)示例6-20os.path.exists():檢查指定文件或目錄是否存在,如果存在則返回True,否則返回False6.4.5文件路徑操作137importosimportshutilsrc='src_files/230115.log'#原文件路徑dst='dst_files/230115.log'#目標(biāo)文件路徑ifos.path.exists(dst):next_step=input(f'{dst}已存在,仍要復(fù)制嗎?(Y/n):')ifnext_step=='Y':shutil.copy(src,dst)print('拷貝完成!')else:print('拷貝停止!')示例6-21os.path.join():將多個(gè)路徑拼接成一個(gè)完整的文件路徑字符串6.4.5文件路徑操作137importosroot=r'E:\src'sub_dir='chapter06'file_name='demo.txt'full_path=os.path.join(root,sub_dir,file_name)print(full_path)#打?。篍:\src\chapter06\demo.txt示例6-22os.path.abspath():返回指定文件的絕對(duì)路徑,如果給定的路徑已經(jīng)是絕對(duì)路徑,則返回該路徑;否則將其轉(zhuǎn)換為絕對(duì)路徑6.4.5文件路徑操作138importosrelative_path='6-18.py'absolute_path=os.path.abspath(relative_path)#打印結(jié)果:E:\src\chapter06\6-18.pyprint(absolute_path)示例6-23解析文件路徑os.path.dirname():返回指定文件的目錄部分,不含文件名部分os.path.basename():返回指定路徑的文件名部分,不含目錄部分os.path.splitext():將文件路徑按最后一個(gè)“.”分割,返回一個(gè)包含文件名和擴(kuò)展名的元組6.4.5文件路徑操作1386.4.5文件路徑操作138importosfull_path=r'E:\src\demo.py'dir_path=os.path.dirname(full_path)

#目錄部分base_name=os.path.basename(full_path)

#完整文件名#文件名、擴(kuò)展名file_name,ext=os.path.splitext(base_name) print(dir_path) #打印結(jié)果:E:\srcprint(base_name) #打印結(jié)果:demo.pyprint(file_name) #打印結(jié)果:demoprint(ext) #打印結(jié)果:.py示例6-24本章結(jié)束Python程序設(shè)計(jì)第7章Python面向?qū)ο缶幊虒W(xué)習(xí)目標(biāo)識(shí)記類的語法理解面向?qū)ο笕筇卣髡莆彰嫦驅(qū)ο笕筇卣鞯氖褂梅椒ㄖR(shí)目標(biāo)能夠正確編寫Python類能夠使用Python類解決實(shí)際問題能力目標(biāo)數(shù)據(jù)隱私的尊重和保護(hù)創(chuàng)新精神和可持續(xù)發(fā)展意識(shí)多樣性思維和包容性情感態(tài)度與價(jià)值觀Python類與對(duì)象01020403封裝繼承多態(tài)目

錄Python類與對(duì)象01020403封裝繼承多態(tài)目

錄面向?qū)ο蠡靖拍铑惖亩x對(duì)象的使用面向過程程序設(shè)計(jì)以算法為中心問題->一系列步驟制作蛋糕:準(zhǔn)備材料->攪拌面糊->烤制蛋糕胚->涂抹奶油->裱花裝飾mix_batter(flour)bake_cake(power,minites)spread_cream(color)decoration(cream,ftruits,chocolate)面向?qū)ο蟪绦蛟O(shè)計(jì)7.1.1面向過程與面向?qū)ο蟪绦蛟O(shè)計(jì)1457.1.2類與對(duì)象146現(xiàn)實(shí)含義面向?qū)ο蟪绦蛟O(shè)計(jì)類和對(duì)象類一群具有相似特征或行為的個(gè)體的統(tǒng)稱模板或者藍(lán)圖規(guī)定了一組屬性(變量)和一組方法(函數(shù))屬于自定義的數(shù)據(jù)類型人類-張三寵物類-薩摩耶肉包微波爐類-貨架上待售的某臺(tái)微波爐對(duì)象某個(gè)類的一個(gè)具體實(shí)例,具有該類的屬性和行為根據(jù)模板將屬性值具體化之后,得到的一個(gè)類的實(shí)例個(gè)體擁有具體的屬性值能使用類定義的方法封裝:將數(shù)據(jù)和操作捆綁在一起,形成一個(gè)類定義每個(gè)類的職責(zé)隱藏了內(nèi)部實(shí)現(xiàn)細(xì)節(jié)提高代碼可讀性和可維護(hù)性增加了數(shù)據(jù)的安全性和可靠性。繼承:從已有的類派生出新類的過程避免重復(fù)編寫相同的代碼方便系統(tǒng)擴(kuò)展多態(tài):提高了代碼的靈活性和擴(kuò)展性7.1.3面向?qū)ο笕筇卣?467.2類的定義與對(duì)象使用1477.2.1關(guān)鍵字class147class:定義類定義一個(gè)空類class類名:#類體classCircle:pass示例7-17.2.2類屬性和類方法147類屬性:與類本身關(guān)聯(lián)的屬性所有對(duì)象能夠共享的屬性對(duì)于具體的實(shí)例來說意義不大類屬性位于類的頂部,定義在類的任何方法之外使用類屬性class類名:類屬性1=值1類屬性2=值2類名.類屬性名7.2.2類屬性和類方法148類屬性的定義和使用classCircle:pi=3.14159default_line_color='黑色'default_fill_color='白色'print(Circle.pi)Circle.default_line_color='紅色'示例7-27.2.2類屬性和類方法148類方法:封裝與類屬性有關(guān)、與實(shí)例無關(guān)的功能不能直接訪問實(shí)例屬性和實(shí)例方法調(diào)用類方法class類名:@classmethoddef類方法名(cls,參數(shù)列表)#函數(shù)體類名.類方法(除cls之外的參數(shù)值)使用裝飾器@classmethodcls:代表該方法所屬的類,在類方法內(nèi)部將cls當(dāng)類名使用7.2.2類屬性和類方法148類方法的定義和使用classCircle:@classmethoddefset_default_color(cls,line,fill):cls.default_line_color=linecls.default_fill_color=fillCircle.set_default_color('深藍(lán)色','淺藍(lán)色')示例7-37.2.3實(shí)例屬性和實(shí)例方法149實(shí)例屬性:類的對(duì)象各自持有的屬性標(biāo)識(shí)對(duì)象本身的特征值與對(duì)象自身密切關(guān)聯(lián),不應(yīng)與其他對(duì)象共享舉例每個(gè)人的身份證號(hào)每臺(tái)洗衣機(jī)的品牌和型號(hào)每本書的書名和作者實(shí)例屬性通常寫在類的__init__()方法中7.2.3實(shí)例屬性和實(shí)例方法149__init__()方法調(diào)用時(shí)機(jī):創(chuàng)建類的新對(duì)象時(shí)作用:初始化新對(duì)象命名:__方法名__特定場景下自動(dòng)調(diào)用開發(fā)者考慮具體實(shí)現(xiàn)魔術(shù)方法class類名:def__init__(self,參數(shù)1,參數(shù)2,...,參數(shù)N)self.實(shí)例屬性1=參數(shù)1self.實(shí)例屬性2=參數(shù)2...self.實(shí)例屬性N=參數(shù)Nself:代表即將被創(chuàng)建出來的新對(duì)象self.實(shí)例屬性名=值7.2.3實(shí)例屬性和實(shí)例方法149實(shí)例屬性的定義classCircle:def__init__(self,r,line_color=default_line_color,fill_color=default_fill_color):self.r=rself.line_color=line_colorself.fill_color=fill_color示例7-47.2.3實(shí)例屬性和實(shí)例方法149實(shí)例的創(chuàng)建變量名=類名(__init__()方法中除了self之外的參數(shù))classCircle:def__init__(self,r,

ine_color=default_line_color,fill_color=default_fill_color):

self.r=rself.line_color=line_colorself.fill_color=fill_colorc1=Circle(1.0)c2=Circle(2.0,'紅色','黃色')示例7-47.2.3實(shí)例屬性和實(shí)例方法150實(shí)例屬性的使用對(duì)象.實(shí)例屬性名classCircle:def__init__(self,r,

line_color=default_line_color,fill_color=default_fill_color):self.r=rself.line_color=line_colorself.fill_color=fill_colorc1=Circle(1.0)c2=Circle(2.0,'紅色','黃色')print(f'半徑{c1.r},線條{c1.line_color},填充{c1.fill_color}')示例7-47.2.3實(shí)例屬性和實(shí)例方法150實(shí)例方法:與具體的對(duì)象關(guān)聯(lián)的方法需要對(duì)象執(zhí)行的行為調(diào)用實(shí)例方法class類名:def實(shí)例方法名(self,參數(shù)1,參數(shù)2,...,參數(shù)N)#代碼塊對(duì)象.實(shí)例方法(除self之外的其他參數(shù))self:代表正在調(diào)用這個(gè)實(shí)例方法的對(duì)象7.2.3實(shí)例屬性和實(shí)例方法150實(shí)例方法的定義與調(diào)用classCircle:def__init__(self,r,

line_color=default_line_color,fill_color=default_fill_color):self.r=rself.line_color=line_colorself.fill_color=fill_color

defdraw(self):print(f'繪制圓:半徑{self.r},線條{self.line_color},填充{self.fill_color}')c1=Circle(2.0,'紅色','黃色')c1.draw()示例7-57.2.4靜態(tài)方法150靜態(tài)方法邏輯上功能和類相關(guān)放在類中更合適通過“類名.靜態(tài)方法()”調(diào)用class類名:@staticmethoddef方法名(參數(shù)列表)#函數(shù)體使用裝飾器@staticmethod7.2.4靜態(tài)方法151靜態(tài)方法的定義和調(diào)用classCircle:pi=3.14159@staticmethoddefcalc_area(r):returnr**2*Circle.piprint(Circle.calc_area(2.0))示例7-6Python類與對(duì)象01020403封裝繼承多態(tài)目

錄封裝020403繼承多態(tài)目

錄Python類與對(duì)象01Python實(shí)現(xiàn)封裝@property7.3封裝151封裝:信息隱藏只對(duì)外提供必要的屬性和方法,提高代碼安全性外部不關(guān)心對(duì)象內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),簡化編程過程訪問控制私有保護(hù)公有可以公開:名字受保護(hù)的:財(cái)產(chǎn)絕對(duì)不能公開:秘密7.3.1Python實(shí)現(xiàn)封裝151Python沒有明確的訪問控制符保護(hù)屬性或方法:單下劃線“_”開始,規(guī)范上約定不能直接使用(用了也不會(huì)報(bào)錯(cuò))私有屬性或方法:雙下劃線“__”開始,語法上不能直接使用(用了會(huì)報(bào)錯(cuò))classDemo1:def__init__(self):self.__private_data=0

def__private_method(self):print('一個(gè)前置雙下劃線命名的私有方法')示例7-77.3.1Python實(shí)現(xiàn)封裝151classCircle:definfo(self):print(self.__private_data)self.__private_method()d1=Demo1()print(d1.__private_data)#報(bào)錯(cuò):AttributeErrord1.__private_method()#報(bào)錯(cuò):AttributeError

print(d1._Demo1__private_data)d1._Demo1__private_method()示例7-77.3.1Python實(shí)現(xiàn)封裝152前置單下劃線命名保護(hù)的屬性和方法classDemo2:def__init__(self):self._protected_data=0def_protected_method(self):print('一個(gè)前置單下劃線命名的保護(hù)方法')definfo(self):print(self._protected_data)self._protected_method()d2=Demo2()print(d2._protected_data)d2._protected_method()示例7-87.3.2@property152通過實(shí)例方法get_r()和set_r()讀寫半徑classCircle:def__init__(self):self.__r=Nonedefget_r(self):returnself.__rdefset_r(self,r):if(isinstance(r,int)orisinstance(r,float))andr>0:self.__r=relse:print('r必須是大于0的整數(shù)或浮點(diǎn)數(shù).')示例7-97.3.2@property152通過實(shí)例方法get_r()和set_r()讀寫半徑@property:定義對(duì)象屬性訪問器將一個(gè)實(shí)例方法偽裝成實(shí)例屬性簡潔代碼c1=Circle()c1.set_r(2.0)print(c1.get_r())#打印結(jié)果:2.0示例7-97.3.2@property153@property定義只讀屬性fromdatetimeimportdateclassPerson:def__init__(self,name,born):=nameself.born=born示例7-107.3.2@property153@property定義只讀屬性

@propertydefage(self):today=date.today()birthday=self.born.replace(year=today.year)ifbirthday>today:returntoday.year-self.born.year-1else:returntoday.year-self.born.yearp1=Person('',date(1990,5,15))print(p1.age)#打印結(jié)果:33示例7-107.3.2@property153@property定義讀/寫屬性classCircle:def__init__(self):self.__r=None@propertydefr(self):returnself.__r示例7-117.3.2@property153@property定義讀/寫屬性

@r.setterdefr(self,r):if(isinstance(r,int)orisinstance(r,float))andr>0:self.__r=relse:print('r必須是大于0的整數(shù)或浮點(diǎn)數(shù).')c1=Circle()c1.r=2.0print(c1.r)#打印結(jié)果:2.0示例7-11Python類與對(duì)象01020403封裝繼承多態(tài)目

錄繼承0304多態(tài)目

錄Python類與對(duì)象0102封裝代碼復(fù)用擴(kuò)展新特性7.4.1代碼復(fù)用161繼承:從已有的類派生新的子類,子類完全繼承父類的公有屬性和公有方法實(shí)現(xiàn)代碼復(fù)用,減少類之間代碼冗余子類添加新屬性/方法,靈活擴(kuò)展生命值攻擊值派生成長等級(jí)escape()派生攻擊傾向Spirit類Pet類Monster類7.4.1代碼復(fù)用繼承語法class子類名(父類名):#子類實(shí)現(xiàn)7.4.1代碼復(fù)用161Spirit類派生子類Pet和MonsterclassSpirit:def__init__(self,life=100,aggro=False):self.life=lifeself.current_life=lifeself.aggro=aggrodefis_live(self):returnFalseifself.current_life<=0elseTruedefis_aggro(self):returnself.aggro示例7-127.4.1代碼復(fù)用161Spirit類派生子類Pet和MonsterclassPet(Spirit):passclassMonster(Spirit):passp1=Pet(100,True)#調(diào)用父類的__init__()m1=Monster(400,False)#調(diào)用父類的__init__()print(p1.life,p1.current_life,p1.aggro)print(m1.life,m1.current_life,m1.aggro)示例7-127.4.2擴(kuò)展新特性161擴(kuò)展新特性class子類名(父類名)子類類屬性=值def__init__(self,參數(shù)列表):

#初始化繼承的實(shí)例屬性super().__init__(參數(shù)列表)

self.子類實(shí)例屬性=值super():內(nèi)置函數(shù),用于調(diào)用父類的方法,此處調(diào)用確保父類中的初始化代碼正確執(zhí)行子類__init__()方法的參數(shù)列表常常要包含父類初始化所需的參數(shù)7.4.2擴(kuò)展新特性162子類Monster添加新方法classMonster(Spirit):def__init__(self,life=100,aggro=False,exp=200):super().__init__(life,aggro)self.exp=expdefescape(self):p=random.randint(1,100)ifp<=40:print('逃跑成功!')self.current_life=self.lifeelse:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論