天天看點

Python輕松入門-26 類和對象

這節課,我們來講解類和對象。那麼,類是啥?最簡單的對類的解釋就是:類是由某種特定的資料所組成的内聚的包。它描述了一些對象的行為規則,而這些對象就被稱為該類的執行個體,不明白不要緊,接下來我們就來詳細介紹。在Python中類的關鍵字是class,假如現在我們來建立一個小遊戲,首先需要建立一個敵人類Enemy,它有一個類成員life表示它的生命值,我們把它初始值設為3:

class Enemy:

life = 3

然後我們可以為敵人類添加一個函數來模拟當敵人遭受攻擊時的場景:

    def attack(self):

print("掉一滴血")self.life -= 1

這裡的self相當于C++或者Java中的this指針,也就是說,它代表的是敵人這個類的本身。所當調用這個函數時,會将自己的生命值減1。現在我們再建立一個函數,來檢查敵人是否活着:

    def checkLife(self):

if self.life <= 0:print("我屎了")else:print("我還活着,來打我呀!")

是以現在我們已經有了一個完整的敵人類,它可以被攻擊,然後,我們也可以判斷它是否還活着。

現在我們來調用它,比如說直接調用attack函數:

attack()

但是你看,編譯器提示錯誤,這是因為:如果想要通路類中的任何成員,比如說成員變量或者成員函數,你需要通過另一種特别的方式,就是建立一個對象。建立對象實際上和建立變量非常相似,這裡我們聲明一個對象enemy1,然後通過Enemy類對它進行指派,接着,我們就可以通過enemy1來調用函數attack:

enemy1 = Enemy()

enemy1.attack()

是以以上代碼的意思就是說,enemy1是通過類Enemy執行個體化後的一個對象,是以這個對象就可以調用它本身所具有的功能函數attack。現在我們不妨運作下:

圖 5‑1

這裡就會列印出掉一點血,符合我們的預期,現在我們來檢查敵人是否還活着:

enemy1.checkLife()

運作:

圖 5‑2

輸出我還活着,因為現在還剩下2滴血。

這裡我想說明為什麼大家都會使用類來編寫程式的原因。實際上,每一個對象都是類的一個執行個體,是以一個對象和另一個對象它們之間是互相獨立的。比如說,這裡我建立另一個Enemy對象enemy2,它被攻擊了3次: