第十八天 物件導向程式設計的特點(二)

Asahi_aileen發表於2020-11-30

物件導向

多繼承

class Parent2():
    print('我是第二個爹')

class Parent():
    print('我是第一個爹')
    
class SubClass(Parent, Parent2):
    print('我是子類')
    
#	
# 結果: 	我是第二個爹
#		    我是第一個爹
# 	        我是子類
#注意:類在定義的時候就執行類體程式碼,執行順序是從上到下

__bases __可以獲取當前類所有的父類 使用SubClass. __bases __

print(SubClass.__bases__)


(<class '__main__.Parent'>, <class '__main__.Parent2'>)

多型

將父類物件應用於子類的特徵就是多型。比如建立一個螺絲類,螺絲類有兩個屬性:粗細和螺紋密度;然後在建立兩類,一個是長螺絲,一個是短螺絲,並且他們都繼承了螺絲類。這樣長螺絲類和短螺絲類不僅具有相同的特徵,還具有不同的特徵。子類繼承父類特徵的同時,也具有了自己的特徵,並且能夠實現不同的效果,這就是多型的結構。

屬性和方法

  • 類屬性
  • 例項屬性
  • 例項方法
  • 類方法
  • 靜態方法(擴充套件)
 實現:

class Game(object):
    top_score = 0   # 遊戲最高分,類屬性

    @staticmethod
    def show_help():  # 靜態方法
        print("幫助資訊:讓殭屍走進房間")

    @classmethod
    def show_top_score(cls):  # 類方法
        print("遊戲最高分是 %d" % cls.top_score)

    def __init__(self, player_name):
        self.player_name = player_name  # 例項屬性

    def start_game(self):  # 例項方法
        print("[%s] 開始遊戲..." % self.player_name)
        
        Game.top_score = 999   # 使用類名.修改歷史最高分
        
 測試:

# 1. 檢視遊戲幫助
Game.show_help()

# 2. 檢視遊戲最高分
Game.show_top_score()

# 3. 建立遊戲物件,開始遊戲
game = Game("小明")
game.start_game()

# 4. 遊戲結束,檢視遊戲最高分
Game.show_top_score()

異常

異常簡介

  • 程式在運⾏過程中可能會出現⼀些錯誤。⽐如: 使⽤了不存在的索引,兩個不
    同型別的資料相加…這些錯誤我們稱之為異常
  • 處理異常 程式運⾏時出現異常,⽬的並不是讓我們的程式直接終⽌!Python
    是希望在出現異常時,我們可以編寫程式碼來對異常進⾏處理

異常的傳播

  • 當在函式中出現異常時,如果在函式中對異常進⾏了處理,則異常不會在進
    ⾏傳播。如果函式中沒有對異常進⾏處理,則異常會繼續向函式調⽤傳播。
    如果函式調⽤處處理了異常,則不再傳播異常,如果沒有處理則繼續向調⽤
    處傳播。直到傳遞到全域性作⽤域(主模組)如果依然沒有處理,則程式終⽌,並
    顯示異常資訊。
  • 當程式運⾏過程中出現異常以後,所有異常資訊會儲存到⼀個異常物件中。
    ⽽異常傳播時,實際上就是異常物件拋給了調⽤處

異常物件

try語句
try:
程式碼塊(可能出現錯誤的語句)
except 異常型別 as 異常名:
程式碼塊(出現錯誤以後的處理⽅式)
except 異常型別 as 異常名:
程式碼塊(出現錯誤以後的處理⽅式)
except 異常型別 as 異常名:
程式碼塊(出現錯誤以後的處理⽅式)
 ....
else:
程式碼塊(沒出錯時要執⾏的語句)

finally:
程式碼塊(是否出錯該程式碼塊都會執⾏)
try是必須的 else有沒有都可以
except和finally⾄少有⼀個

相關文章