面向對象編程,簡單來說就是基於對類和對象的使用。本文來為大家介紹面向對象的三大特性——封裝、繼承、多態。
封裝
第一節:封裝的簡介
上一節我們講過:直接通過 對象.屬性
的方式來修改屬性的值會導致對象中的屬性可以隨意修改,這是非常的不安全的:因為值可以任意修改,不論對錯。
這裡我們將介紹一種方法來更好的保護數據,保證數據的安全性:封裝。
封裝是面向對象的三大特性之一。
封裝指的是隱藏對象中一些不希望被外部所訪問到的屬性或方法>>點擊鏈接查看更多關於封裝的內容
第二節:隱藏類中的屬性
本文介紹了隱藏類中的屬性的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學習站官方技術圈!!