士兵突擊案例
身份運算子
封裝 是物件導向程式設計的一大特點
物件導向程式設計的 第一步 —— 將 屬性 和 方法 封裝 到乙個抽象的 類 中
外界 使用 類 建立 物件,然後 讓物件呼叫方法
物件方法的細節 都被 封裝 在 類的內部
乙個物件的 屬性 可以是 另外乙個類建立的物件
需求士兵 許三多 有一把 ak47
士兵 可以 **
槍 能夠 發射 子彈
槍 裝填 裝填子彈 —— 增加子彈數量
shoot 方法需求
1> 判斷是否有子彈,沒有子彈無法射擊
2> 使用 print 提示射擊,並且輸出子彈數量
class gun:
def __init__(self, model):
# 槍的型號
self.model = model
# 子彈數量
self.bullet_count = 0
def add_bullet(self, count):
self.bullet_count += count
def shoot(self):
# 判斷是否還有子彈
if self.bullet_count <= 0:
print("沒有子彈了...")
return
# 發射一顆子彈
self.bullet_count -= 1
print("%s 發射子彈[%d]..." % (self.model, self.bullet_count))
# 建立槍物件
ak47 = gun("ak47")
ak47.add_bullet(50)
ak47.shoot()
假設:每乙個新兵 都 沒有槍
定義沒有初始值的屬性
在定義屬性時,如果 不知道設定什麼初始值,可以設定為 none
none 關鍵字 表示 什麼都沒有
表示乙個 空物件,沒有方法和屬性,是乙個特殊的常量
可以將 none 賦值給任何乙個變數
fire 方法需求
1> 判斷是否有槍,沒有槍沒法衝鋒
2> 喊一聲口號
3> 裝填子彈
4> 射擊
class soldier:
def __init__(self, name):
# 姓名
self.name = name
# 槍,士兵初始沒有槍 none 關鍵字表示什麼都沒有
self.gun = none
def fire(self):
# 1. 判斷士兵是否有槍
if self.gun is none:
print("[%s] 還沒有槍..." % self.name)
return
# 2. 高喊口號
print("衝啊...[%s]" % self.name)
# 3. 讓槍裝填子彈
self.gun.add_bullet(50)
# 4. 讓槍發射子彈
self.gun.shoot()
小結
建立了乙個 士兵類,使用到init內建方法
在定義屬性時,如果 不知道設定什麼初始值,可以設定為 none
在 封裝的 方法內部,還可以讓 自己的 使用其他類建立的物件屬性 呼叫已經 封裝好的方法
身份運算子用於 比較 兩個物件的 記憶體位址 是否一致 —— 是否是對同乙個物件的引用
在 python 中針對 none 比較時,建議使用 is 判斷
is 與 == 區別:
is 用於判斷 兩個變數 引用物件是否為同乙個
== 用於判斷 引用變數的值 是否相等
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> b is a
false
>>> b == a
true
Python物件導向04 物件導向封裝案例
封裝是物件導向程式設計的一大特點 物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 外界使用類建立物件,然後讓物件呼叫方法物件方法的細節都被封裝在類的內部需求 小明體重75.0公斤 小明每次跑步會 0.5公斤 小明每次吃東西體重增加1公斤 class person 人類 def init ...
Python物件導向05 物件導向封裝案例 II
封裝 封裝是物件導向程式設計的一大特點 物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 外界使用類建立物件,然後讓物件呼叫方法物件方法的細節都被封裝在類的內部乙個物件的屬性可以是另外乙個類建立的物件 需求 士兵許三多有一把ak47士兵可以 槍能夠發射子彈 槍裝填裝填子彈 增加子彈數量sh...
python 物件導向 04 物件導向封裝案例
封裝是物件導向程式設計的一大特點 物件導向程式設計的第一步 將屬性和方法封裝到乙個抽象的類中 外界使用類建立物件,然後讓物件呼叫方法 物件方法的細節都被封裝在類的內部 需求 小明體重75.0公斤 小明每次跑步會 0.5公斤 小明每次吃東西體重增加1公斤 人類 def init self,name,w...