python---核心知識12之物件導向三大特性補充

weixin_34249678發表於2018-03-22

多型的概念:所謂多型,在我們日常生活中有很多體現,比如說動物都有吃東西的行為,但是豬吃東西和雞吃東西是不是不一樣,這兩個類別同屬於一個動物類,但是各自對於同一行為的表現形式不一樣,這其實就是多型;在程式碼裡面其實就是在繼承的前提下,不同的子類去呼叫父類同一個方法,產生不同的結果,這就是多型

python中的多型;python語言是屬於動態語言,也就是duck鴨子語言。只要一個物件,會游泳,會走,會叫,那就可以把它當成鴨子處理,關注點在於物件的行為和屬性,而非物件的型別,所以在python中,沒有真正意義上的多型,也不需要多型;因為不用多型這種機制就可以實現出多型這種結果,所以python並不需要多型;

所以其實在python裡面的物件導向,其實;最終只有兩大特性,就是封裝和繼承;最後我們再來補充兩個概念,就是抽象類以及抽象方法;

抽象類:就是對普通類的一種抽象;比如說小貓,小狗這兩個類,他們都有叫的動作,吃的動作,那我們就可以抽象出一個動物類;這個動物類就是抽象類,動物類具有叫,吃的動作,但是每種動物的具體動作也是不一樣的,我們就把吃,叫這兩種動作也抽象出來,這樣的方法就叫做抽象方法,並且所有的子類必須實現抽象方法;

通過下面的程式碼我們可以看出,抽象類和抽象方法需要匯入abc模組,抽象類需要設定它的元類為abc.ABCMeta,抽象方法或者抽象屬性也要加裝飾器;

5895872-093be87d03d5e1bc.png

最後我們在寫一個物件導向的例子:有三個類:貓,狗都有姓名,年齡的屬性;貓狗有吃睡玩同樣的動作,貓有抓老鼠特殊的工作技能,狗有看家的特殊技能,然後人有寵物這個特殊屬性,可以讓所有的寵物玩和工作,這就是大概的需求,下面貼出程式碼:

程式碼裡面都寫有註釋啥的,就不詳細介紹了;

5895872-e80d5dd70002ff3f.png

相關文章