
??????教程全知識(shí)點(diǎn)簡介:1.Python函數(shù)高級特性包括匿名函數(shù)(lambda語法格式、與普通函數(shù)區(qū)別、應(yīng)用場景、參數(shù)形式)。2. 文件操作涵蓋文件打開關(guān)閉、文件讀寫(write寫數(shù)據(jù)、readlines讀數(shù)據(jù))。3. 面向?qū)ο缶幊贪惡蛯ο螅惗x、對象創(chuàng)建、類對象關(guān)系)、類構(gòu)成、self關(guān)鍵字、對象屬性操作、構(gòu)造方法init、字符串方法str、多繼承、子類重寫、多態(tài)概念及應(yīng)用、類屬性和實(shí)例屬性、靜態(tài)方法和類方法。4. 異常處理涵蓋異常傳遞(try嵌套、函數(shù)嵌套調(diào)用)、自定義異常拋出。5. 模塊系統(tǒng)包括Python模塊概念、import導(dǎo)入機(jī)制、學(xué)生管理系統(tǒng)應(yīng)用。6. 計(jì)算機(jī)基礎(chǔ)涉及計(jì)算機(jī)組成、硬件系統(tǒng)、程序處理機(jī)制、編程語言概念、Python介紹、解釋器作用。7. Python語法基礎(chǔ)包括注釋分類、輸出(格式化輸出、轉(zhuǎn)義字符、結(jié)束符)、輸入語法、數(shù)據(jù)類型轉(zhuǎn)換、運(yùn)算符(算數(shù)運(yùn)算符)。8. 控制流程涵蓋判斷語句(if語句、if-else、if-elif-else、三目運(yùn)算、if嵌套)、循環(huán)語句(while循環(huán)、for循環(huán)、break和continue)。9. 數(shù)據(jù)容器包括字符串操作(rfind、partition、splitlines、isalpha、isdigit)、列表(列表格式、相關(guān)操作、循環(huán)遍歷、嵌套)、元組、字典(鍵值訪問)、公共方法、容器類型轉(zhuǎn)換、推導(dǎo)式(列表推導(dǎo)式、多for循環(huán))。10. 函數(shù)進(jìn)階涵蓋函數(shù)返回值、函數(shù)文檔說明、函數(shù)嵌套調(diào)用、變量作用域(局部變量、全局變量、global關(guān)鍵字)、拆包和變量交換、引用概念、可變不可變類型、函數(shù)使用注意事項(xiàng)

??????????本站這篇博客:???http://www.itdecent.cn/p/728ca1791195 ???中查看
??????????本站這篇博客:???http://www.itdecent.cn/p/728ca1791195 ???中查看
??????????本站這篇博客:???http://www.itdecent.cn/p/728ca1791195 ???中查看
? 本教程項(xiàng)目亮點(diǎn)
?? 知識(shí)體系完整:覆蓋從基礎(chǔ)原理、核心方法到高階應(yīng)用的全流程內(nèi)容
?? 全技術(shù)鏈覆蓋:完整前后端技術(shù)棧,涵蓋開發(fā)必備技能
?? 從零到實(shí)戰(zhàn):適合 0 基礎(chǔ)入門到提升,循序漸進(jìn)掌握核心能力
?? 豐富文檔與代碼示例:涵蓋多種場景,可運(yùn)行、可復(fù)用
?? 工作與學(xué)習(xí)雙參考:不僅適合系統(tǒng)化學(xué)習(xí),更可作為日常開發(fā)中的查閱手冊
?? 模塊化知識(shí)結(jié)構(gòu):按知識(shí)點(diǎn)分章節(jié),便于快速定位和復(fù)習(xí)
?? 長期可用的技術(shù)積累:不止一次學(xué)習(xí),而是能伴隨工作與項(xiàng)目長期參考
??????全教程總章節(jié)


??????本篇主要內(nèi)容
類和對象
面向?qū)ο缶幊痰?個(gè)非常重要的概念:類和對象
對象是面向?qū)ο缶幊痰暮诵?,在使用對象的過程中,為了將具有共同特征和行為的一組對象抽象定義,提出了另外一個(gè)新的概念——類
1. 類
學(xué)習(xí)編程語言,就是為了模擬現(xiàn)實(shí)世界中的事物,實(shí)現(xiàn)信息化來提高工作效率。例如銀行的業(yè)務(wù)系統(tǒng)、超市的結(jié)賬系統(tǒng)等,都是如此。
面向?qū)ο蟮恼Z言當(dāng)中,“類”就是用來模擬現(xiàn)實(shí)事物的。
那么模擬現(xiàn)實(shí)世界的事物通常從兩方面模擬:
- 屬性:事物的特征描述信息,用于描述某個(gè)特征“是什么”。 靜
- 行為:事物的能力行動(dòng)方案,用于說明事物“能做什么”。
類中也有屬性、行為兩個(gè)組成部分,而“對象”是類的具體實(shí)例。例如:
- 類:抽象的,是一張“手機(jī)設(shè)計(jì)圖”。
- 對象:具體的,是一個(gè)“真正的手機(jī)實(shí)例”。

類就相當(dāng)于制造飛機(jī)時(shí)的圖紙,用它來進(jìn)行創(chuàng)建的飛機(jī)就相當(dāng)于對象
人以類聚 物以群分。
具有相似內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律的實(shí)體的集合(或統(tǒng)稱為抽象)。
具有相同屬性和行為事物的統(tǒng)稱
類是抽象的,在使用的時(shí)候通常會(huì)找到這個(gè)類的一個(gè)具體的存在,使用這個(gè)具體的存在。一個(gè)類可以找到多個(gè)對象

2. 對象
某一個(gè)具體事物的存在 ,在現(xiàn)實(shí)世界中可以是看得見摸得著的。
可以是直接使用的

3. 類和對象之間的關(guān)系

小總結(jié):類就是創(chuàng)建對象的模板
4. 練習(xí):區(qū)分類和對象
奔馳汽車 類
奔馳smart 類
張三的那輛奔馳smart 對象
狗 類
大黃狗 類
李四家那只大黃狗 對象
水果 類
蘋果 類
紅蘋果 類 紅富士蘋果 類
我嘴里吃了一半的蘋果 對象
5. 類的構(gòu)成
類(Class) 由3個(gè)部分構(gòu)成
- 類的名稱:類名
- 類的屬性:一組數(shù)據(jù)
- 類的方法:允許對進(jìn)行操作的方法 (行為)
<1> 舉例:1>
1)人類設(shè)計(jì),只關(guān)心3樣?xùn)|西:
- 事物名稱(類名):人(Person)
- 屬性:身高(height)、年齡(age)
- 方法(行為/功能):跑(run)、打架(fight)
2)狗類的設(shè)計(jì)
- 類名:狗(Dog)
- 屬性:品種 、毛色、性別、名字、 腿兒的數(shù)量
- 方法(行為/功能):叫 、跑、咬人、吃、搖尾巴

6. 類的抽象
如何把日常生活中的事物抽象成程序中的類?
擁有相同(或者類似)屬性和行為的對象都可以抽像出一個(gè)類
方法:一般名詞都是類(名詞提煉法)
<1> 坦克發(fā)射3顆炮彈轟掉了2架飛機(jī)1>
- 坦克--》可以抽象成 類
- 炮彈--》可以抽象成類
- 飛機(jī)-》可以抽象成類
<2> 小明在公車上牽著一條叼著熱狗的狗2>
- 小明--》 人類
- 公車--》 交通工具類
- 熱狗--》 食物類
- 狗--》 狗類
<3>【想一想】如下圖中,有哪些類呢?3>
說明:
- 人
- 槍
- 子彈
- 手榴彈
- 刀子
- 箱子
<4>【想一想】如下圖中,有哪些類呢?4>

說明:
-
向日葵
- 類名: xrk
- 屬性:
- 行為: 放陽光
-
豌豆
- 類名: wd
- 屬性: 顏色 、發(fā)型,血量
- 行為:發(fā)炮, 搖頭
-
堅(jiān)果:
- 類名:jg
- 屬性:血量 類型
- 行為:阻擋;
-
僵尸:
- 類名:js
- 屬性:顏色、血量、 類型、速度
- 行為:走 跑跳 吃 死
定義類
定義一個(gè)類,格式如下:
class 類名:
方法列表
demo:定義一個(gè)Hero類
# class Hero: # 經(jīng)典類(舊式類)定義形式
# class Hero():
class Hero(object): # 新式類定義形式
def info(self):
print("英雄各有見,何必問出處。")
說明:
定義類時(shí)有2種形式:新式類和經(jīng)典類,上面代碼中的Hero為新式類,前兩行注釋部分則為經(jīng)典類;
object 是Python 里所有類的最頂級父類;
類名 的命名規(guī)則按照"大駝峰命名法";
info 是一個(gè)實(shí)例方法,第一個(gè)參數(shù)一般是self,表示實(shí)例對象本身,當(dāng)然了可以將self換為其它的名字,其作用是一個(gè)變量 這個(gè)變量指向了實(shí)例對象
創(chuàng)建對象
python中,可以根據(jù)已經(jīng)定義的類去創(chuàng)建出一個(gè)或多個(gè)對象。
創(chuàng)建對象的格式為:
對象名1 = 類名()
對象名2 = 類名()
對象名3 = 類名()
創(chuàng)建對象demo:
class Hero(object): # 新式類定義形式
"""info 是一個(gè)實(shí)例方法,類對象可以調(diào)用實(shí)例方法,實(shí)例方法的第一個(gè)參數(shù)一定是self"""
def info(self):
"""當(dāng)對象調(diào)用實(shí)例方法時(shí),Python會(huì)自動(dòng)將對象本身的引用做為參數(shù),
傳遞到實(shí)例方法的第一個(gè)參數(shù)self里"""
print(self)
print("self各不同,對象是出處。")
# Hero這個(gè)類 實(shí)例化了一個(gè)對象 taidamier(泰達(dá)米爾)
taidamier = Hero()
# 對象調(diào)用實(shí)例方法info(),執(zhí)行info()里的代碼
# . 表示選擇屬性或者方法
taidamier.info()
print(taidamier) # 打印對象,則默認(rèn)打印對象在內(nèi)存的地址,結(jié)果等同于info里的print(self)
print(id(taidamier)) # id(taidamier) 則是內(nèi)存地址的十進(jìn)制形式表示
說明:
-
當(dāng)創(chuàng)建一個(gè)對象時(shí),就是用一個(gè)模子,來制造一個(gè)實(shí)物
self
self指的是調(diào)用該函數(shù)的對象。
# 1. 定義類
class Washer():
def wash(self):
print('我會(huì)洗衣服')
# <__main__.Washer object at 0x0000024BA2B34240>
print(self)
# 2. 創(chuàng)建對象
haier1 = Washer()
# <__main__.Washer object at 0x0000018B7B224240>
print(haier1)
# haier1對象調(diào)用實(shí)例方法
haier1.wash()
haier2 = Washer()
# <__main__.Washer object at 0x0000022005857EF0>
print(haier2)
注意:打印對象和self得到的結(jié)果是一致的,都是當(dāng)前對象的內(nèi)存中存儲(chǔ)地址。
問題:
對象既然有實(shí)例方法,是否也可以有自己的屬性?
添加和獲取對象的屬性
屬性即是特征.
對象屬性既可以在類外面添加和獲取,也能在類里面添加和獲取。
class Hero(object):
"""定義了一個(gè)英雄類,可以移動(dòng)和"""
def move(self):
"""實(shí)例方法"""
print("正在前往事發(fā)地點(diǎn)...")
def attack(self):
"""實(shí)例方法"""
print("發(fā)出了一招強(qiáng)力的普通...")
# 實(shí)例化了一個(gè)英雄對象 泰達(dá)米爾
taidamier = Hero()
# 給對象添加屬性,以及對應(yīng)的屬性值
taidamier.name = "泰達(dá)米爾" # 姓名
taidamier.hp = 2600 # 生命值
taidamier.atk = 450 # 力
taidamier.armor = 200 # 護(hù)甲值
# 通過.成員選擇運(yùn)算符,獲取對象的屬性值
print("英雄 %s 的生命值 :%d" % (taidamier.name, taidamier.hp))
print("英雄 %s 的力 :%d" % (taidamier.name, taidamier.atk))
print("英雄 %s 的護(hù)甲值 :%d" % (taidamier.name, taidamier.armor))
# 通過.成員選擇運(yùn)算符,獲取對象的實(shí)例方法
taidamier.move()
taidamier.attack()
問題:
對象創(chuàng)建并添加屬性后,能否在類的實(shí)例方法里獲取這些屬性呢?如果可以的話,應(yīng)該通過什么方式?
在方法內(nèi)通過self獲取對象屬性
class Hero(object):
"""定義了一個(gè)英雄類,可以移動(dòng)和"""
def move(self):
"""實(shí)例方法"""
print("正在前往事發(fā)地點(diǎn)...")
def attack(self):
"""實(shí)例方法"""
print("發(fā)出了一招強(qiáng)力的普通...")
def info(self):
"""在類的實(shí)例方法中,通過self獲取該對象的屬性"""
print("英雄 %s 的生命值 :%d" % (self.name, self.hp))
print("英雄 %s 的力 :%d" % (self.name, self.atk))
print("英雄 %s 的護(hù)甲值 :%d" % (self.name, self.armor))
# 實(shí)例化了一個(gè)英雄對象 泰達(dá)米爾
taidamier = Hero()
# 給對象添加屬性,以及對應(yīng)的屬性值
taidamier.name = "泰達(dá)米爾" # 姓名
taidamier.hp = 2600 # 生命值
taidamier.atk = 450 # 力
taidamier.armor = 200 # 護(hù)甲值
# 通過.成員選擇運(yùn)算符,獲取對象的實(shí)例方法
taidamier.info() # 只需要調(diào)用實(shí)例方法info(),即可獲取英雄的屬性
taidamier.move()
taidamier.attack()
問題:
創(chuàng)建對象后再去添加屬性有點(diǎn)不合適,有沒有簡單的辦法,可以在創(chuàng)建對象的時(shí)候,就已經(jīng)擁有這些屬性?
init()方法
在Python中,xx()的函數(shù)叫做魔法方法,指的是具有特殊功能的函數(shù)。
__init__()方法的作用:初始化對象。
class Hero(object):
"""定義了一個(gè)英雄類,可以移動(dòng)和"""
# Python 的類里提供的,兩個(gè)下劃線開始,兩個(gè)下劃線結(jié)束的方法,就是魔法方法,__init__()就是一個(gè)魔法方法,通常用來做屬性初始化 或 賦值 操作。
# 如果類面沒有寫__init__方法,Python會(huì)自動(dòng)創(chuàng)建,但是不執(zhí)行任何操作,
# 如果為了能夠在完成自己想要的功能,可以自己定義__init__方法,
# 所以一個(gè)類里無論自己是否編寫__init__方法 一定有__init__方法。
def
