Python面向?qū)ο蠓庋b案例基礎教程
封裝
- 封裝是面向?qū)ο缶幊痰囊淮筇攸c
- 面向?qū)ο缶幊痰牡谝徊剑簩傩院头椒ǚ盅b到一個抽象的類中
- 外界使用類創(chuàng)建對象,然后讓對象調(diào)用方法
- 對象方法的細節(jié)都被封裝在累的內(nèi)部
注意:一個對象的屬性可以是另外一個類創(chuàng)建的對象
一、士兵突擊案例需求分析
需求:
- 士兵張小嘎 有一把 Ak47
- 士兵 可以 開火
- qiang 能夠 發(fā)射子彈
- qiang 需要 裝填子彈----增加子彈數(shù)量
根據(jù)需求,劃分類,共劃分兩個類,一個是士兵類,一個是qiang類,由于創(chuàng)建士兵類中用到qiang,所以在創(chuàng)建類的時候先創(chuàng)建qiang類。
二、創(chuàng)建qiang類
根據(jù)上面的類圖表格來創(chuàng)建qiang類。
model是qiang的型號,bullet_count是子彈的數(shù)量,add_bullet(self, count)裝填子彈方法,Shoot(self)是發(fā)射子彈方法。
代碼:
class Gun(): def __init__(self, model): # 1. qiang的型號 self.model = model # 2. 子彈的數(shù)量,初始值為0 self.bullet_count = 0 def add_bullet(self, count): self.bullet_count += count def shoot(self): # 1. 判斷子彈數(shù)量 if self.bullet_count <= 0: print("[%s] 沒有子彈了" % self.model) return # 2. 發(fā)射子彈, -1 self.bullet_count -= 1 # 提示發(fā)射信息 print("[%s] 突突突。。。[%d]" % (self.model, self.bullet_count)) # 1. 創(chuàng)建qiang對象 ak47 = Gun("Ak47") # 2. 調(diào)用方法 ak47.add_bullet(50) ak47.shoot()
執(zhí)行結果:
三、創(chuàng)建士兵類
假設:每一個士兵都沒有qiang
定義沒有初始值的屬性:在定義屬性時,如果不知道設置什么初始值,可以設置為None
- None關鍵字表示 什么都沒有
- 表示一個空對象,沒有方法和屬性,是一個特殊的常量
- 可以將NNone賦值給任何一個變量
fire方法需求: - 判斷是否有qiang,沒有槍沒辦法沖鋒
- 喊一聲口號
- 裝填子彈
- 射擊
代碼:
class Gun(): def __init__(self, model): # 1. qiang的型號 self.model = model # 2. 子彈的數(shù)量,初始值為0 self.bullet_count = 0 def add_bullet(self, count): self.bullet_count += count def shoot(self): # 1. 判斷子彈數(shù)量 if self.bullet_count <= 0: print("[%s] 沒有子彈了" % self.model) return # 2. 發(fā)射子彈, -1 self.bullet_count -= 1 # 提示發(fā)射信息 print("[%s] 突突突。。。[%d]" % (self.model, self.bullet_count)) class Soldier(): def __init__(self, name): # 1. 姓名 self.name = name # 2. qiang = 新兵沒有槍 self.gun = None # 1. 創(chuàng)建qiang對象 ak47 = Gun("Ak47") # 2. 調(diào)用方法 ak47.add_bullet(50) ak47.shoot() # 3. 創(chuàng)建士兵對象-張小嘎 zhang = Soldier("張小嘎") # 用賦值語句,把ak47交給張小嘎 zhang.gun = ak47 print(zhang.gun)
執(zhí)行結果:
四、完成開火方法
代碼:
class Gun(): def __init__(self, model): # 1. qiang的型號 self.model = model # 2. 子彈的數(shù)量,初始值為0 self.bullet_count = 0 def add_bullet(self, count): self.bullet_count += count def shoot(self): # 1. 判斷子彈數(shù)量 if self.bullet_count <= 0: print("[%s] 沒有子彈了" % self.model) return # 2. 發(fā)射子彈, -1 self.bullet_count -= 1 # 提示發(fā)射信息 print("[%s] 突突突。。。[%d]" % (self.model, self.bullet_count)) class Soldier(): def __init__(self, name): # 1. 姓名 self.name = name # 2. qiang = 新兵沒有槍 self.gun = None def fire(self): # 1. 判斷是否有槍 if self.gun == None: print("[%s]還沒有qiang" % self.name) return # 2. 高喊沖鋒口號 print("沖啊。。。 [%s]" % self.name) # 3. 裝填子彈 self.gun.add_bullet(50) # 4. 發(fā)射子彈射擊 self.gun.shoot() # 1. 創(chuàng)建qiang對象 ak47 = Gun("Ak47") # 2. 調(diào)用方法 # ak47.add_bullet(50) # ak47.shoot() # 3. 創(chuàng)建士兵對象-張小嘎 zhang = Soldier("張小嘎") # 用賦值語句,把ak47交給張小嘎 zhang.gun = ak47 zhang.fire() # print(zhang.gun)
執(zhí)行結果:
以上就是關于面向?qū)ο蟀咐勘粨舻姆治龊痛a演練,主要知識點就是一個對象的屬性可以是另外一個類創(chuàng)建的對象,以及關鍵字None的使用,更多關于Python面向?qū)ο蠓庋b的資料請關注腳本之家其它相關文章!
相關文章
Python實現(xiàn)的數(shù)據(jù)結構與算法之雙端隊列詳解
這篇文章主要介紹了Python實現(xiàn)的數(shù)據(jù)結構與算法之雙端隊列,詳細講述了雙端隊列的概念、功能、定義及Python實現(xiàn)與使用雙端隊列的相關技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04Python爬蟲庫requests獲取響應內(nèi)容、響應狀態(tài)碼、響應頭
上一節(jié)我們給大家介紹了Python爬蟲庫requests的發(fā)送請求傳參等使用方法,今天為大家介紹下requests獲取響應內(nèi)容、響應狀態(tài)碼、響應頭等相關信息2020-01-01python 將numpy維度不同的數(shù)組相加相乘操作
這篇文章主要介紹了python 將numpy維度不同的數(shù)組相加相乘操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03