Python物件導向05 物件導向封裝案例 II

2021-08-26 17:42:34 字數 2665 閱讀 1768

封裝

封裝是物件導向程式設計的一大特點

物件導向程式設計的第一步—— 將屬性方法封裝到乙個抽象的

外界使用建立物件,然後讓物件呼叫方法物件方法的細節都被封裝類的內部

乙個物件的屬性可以是另外乙個類建立的物件

需求

士兵許三多有一把ak47士兵可以**能夠發射子彈

裝填裝填子彈——增加子彈數量shoot方法需求

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

fire方法需求

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封裝的方法內部,還可以讓自己的使用其他類建立的物件屬性呼叫已經封裝好的方法身份運算子用於比較兩個物件的記憶體位址是否一致 ——是否是對同乙個物件的引用

運算子描述例項

isis 是判斷兩個識別符號是不是引用同乙個物件

x is y,類似 id(x) == id(y)

is not

is not 是判斷兩個識別符號是不是引用不同物件

x is not y,類似 id(a) != id(b)

is用於判斷兩個變數 引用物件是否為同乙個

==用於判斷引用變數的值是否相等

>>> a = [1, 2, 3]

>>> b = [1, 2, 3]

>>> b is a

false

>>> b == a

true

python 物件導向 python是物件導向嗎

python是一種物件導向 解釋型計算機程式語言,由guido van rossum於1989年底發明,第乙個公開發行版發行於1991年,python 源 同樣遵循 gpl gnu general public license 協議。python語法簡潔而清晰,具有豐富和強大的類庫。但實際上面向過程...

javase 05 物件導向

一.建構函式的定義與作用 1.函式的名次與類同名 2.沒有返回值型別 3.不能使用retrun 關鍵字來返回乙個值 注意 沒有返回值型別宣告不等同於 void void也是一種返回值的宣告 如果寫上了void,那就是乙個普通的方法啦!二.建構函式的具體應用 1.建構函式也一般的函式一樣,都是可以被過...

05 物件導向的解析

1程式語言的發展 1.1面向機器的語言 計算機在設計之初就要確定好每一條指令對應的線路邏輯,即需要針對不同的機器編寫不同的指令 例如01011100的指令 這樣的語言是不利於編寫和閱讀的。後來出現的組合語言,本質上還是屬於機器語言,只是組合語言用易於記憶的的符號來代替二進位制指令,但還是要根據不同的...