面向對象程式設計,簡單來說就是基于對類和對象的使用。本文來為大家介紹面向對象的三大特性——封裝、繼承、多态。
封裝
第一節:封裝的簡介
上一節我們講過:直接通過
對象.屬性
的方式來修改屬性的值會導緻對象中的屬性可以随意修改,這是非常的不安全的:因為值可以任意修改,不論對錯。
這裡我們将介紹一種方法來更好的保護資料,保證資料的安全性:封裝。
封裝是面向對象的三大特性之一。
封裝指的是隐藏對象中一些不希望被外部所通路到的屬性或方法
>>點選連結檢視更多關于封裝的内容第二節:隐藏類中的屬性
本文介紹了隐藏類中的屬性的2種方法,避免外部可以随意通路。
并通過實際的案例詳述了私有屬性的建設和調用的方法>>
點選連結了解詳情第三節:property裝飾器
property裝飾器,用來将一個get方法,轉換為對象的屬性,添加為property裝飾器以後,我們就可以像調用屬性一樣使用get方法。
但是由于我們隻提供了get方法而沒有set方法,是以不能修改值。此時需要提供set方法進行修改。
要求:使用property裝飾的方法,必須和屬性名是一樣的。>>
點選連結了解更多繼承
第一節:繼承簡介
如果有一個類,能夠實作我們需要的大部分功能,但是不能實作全部功能,那麼如何能讓這個類來實作全部的功能呢?
① 直接修改這個類,在這個類中添加我們需要的功能,這種方式修改起來會比較麻煩,并且會違反OCP原則。(開閉原則),我們不推薦使用這種方式。
② 建立一個新的類這是比較麻煩的,并且需要大量的進行複制粘貼,會出現大量的重複性代碼。這種方式也不太适合。
③ 直接從父類中來繼承它的屬性和方法
- 通過繼承我們可以使一個類擷取到其他類中的屬性和方法
- 在定義類時,可以在類名後的括号中指定目前類的父類(超類、基類、super),子類(衍生類)可以直接繼承父類中的所有的屬性和方法
那該如何用代碼實作繼承呢?>>
點選連結檢視詳情第二節:方法的重寫override
如果在子類中如果有和父類同名的方法,則通過子類執行個體去調用方法時,會調用子類的方法而不是父類的方法,這個特點我們成為叫做方法的重寫(覆寫,override)。可以確定在繼承父類方法之後,自身還可以做出簡單的修改。
同時注意:當我們調用一個對象的方法時,會優先去目前對象中尋找是否具有該方法,如果有則直接調用。如果沒有,則去目前對象的父類中尋找,如果父類中有則直接調用父類中的方法,如果沒有,則去父類的父類中尋找,以此類推,直到找到object,如果依然沒有找到,則報錯。>>
第三節:Python内置函數之super()
super() 函數是用于調用父類(超類)的一個方法。
它是用來解決多重繼承問題的,直接用類名調用父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查找順序(MRO)、重複調用(鑽石繼承)等種種問題。
當程式中的方法被寫死,隻能調用父類中的屬性時,如果子類的父類更換,那麼需要更新的代碼是非常多的,是以就需要一個動态擷取父類的方法。
super() 可以用來擷取目前類的父類,并且通過super()傳回對象調用父類方法時,不需要傳遞self。>>
點選連結檢視更多第四節:多重繼承
多重繼承,會使子類同時擁有多個父類,并且會擷取到所有父類中的方法。
在Python中是支援多重繼承的,也就是我們可以為一個類同時指定多個父類。這是與别的大部分語言不一緻的。但在開發中沒有特殊的情況,應該盡量避免使用多重繼承,因為多重繼承會讓我們的代碼過于複雜。
注意:如果多個父類中有同名的方法,則會現在第一個父類中尋找,然後找第二個,然後找第三個......前邊父類的方法會覆寫後邊父類的方法。>>
多态
第一節:多态簡介
多态是面向對象的三大特征之一。
多态從字面上了解是多種形态。例如:狗有多個種類(狼狗、藏獒、哈士奇、古代牧羊犬...)。
一個對象可以以不同的形态去呈現。>>
點選連結了解多态的實作方法第二節:類的屬性和方法
在之前的課程中我們講過為什麼執行個體可以通路到類中的屬性和方法?那是因為類中定義的屬性和方法都是公共的,任何該類執行個體都可以通路。
當我們調用一個對象的屬性時,解析器會先在目前對象中尋找是否含有該屬性,如果有,則直接傳回目前的對象的屬性值,如果沒有,則去目前對象的類對象中去尋找,如果有則傳回類對象的屬性值,如果沒有則報錯!
在這裡做一些深入的研究:靜态方法不需要指定任何的預設參數,靜态方法可以通過類和執行個體去調用 。
靜态方法,基本上是一個和目前類無關的方法,它隻是一個儲存到目前類中的函數。靜态方法一般都是一些工具方法,和目前類無關。>>
第三節:Python的垃圾回收機制
就像我們生活中會産生垃圾一樣,程式在運作過程當中也會産生垃圾。
程式運作過程中産生的垃圾會影響到程式的運作的運作性能,是以這些垃圾必須被及時清理。
什麼是垃圾?在程式中沒有被引用的對象就是垃圾,這種垃圾對象過多以後會影響到程式的運作的性能。是以我們必須進行及時的垃圾回收,所謂的垃圾回收就是講垃圾對象從記憶體中删除。
在Python中有自動的垃圾回收機制,它會自動将這些沒有被引用的對象删除,是以我們不用手動處理垃圾回收。
在Python中有一些特殊的方法可實作垃圾回收的功能,比如:init、del>>
第四節:Python中的魔術方法
特殊方法,也稱為魔術方法。它們都是使用__開頭和結尾的。例如:
__init__
、__del__`。
特殊方法一般不需要我們手動調用,需要在一些特殊情況下自動執行。
我們在需要的時候去調用就可以了。這些方法都是對多态的展現。>>
點選連結了解更多内容最後來簡單的總結一下面向對象的三大特征:
封裝:確定對象中的資料安全
繼承:保證了對象的可擴充性
多态:保證了程式的靈活性
了解更多有關Python的内容,請訂閱
Python學習站官方技術圈!!