資安

10+實戰課程看透面向對象的三大特性:封裝、繼承和多態

面向對象編程,簡單來說就是基於對類和對象的使用。本文來為大家介紹面向對象的三大特性——封裝、繼承、多態。

封裝

第一節:封裝的簡介

上一節我們講過:直接通過 對象.屬性 的方式來修改屬性的值會導致對象中的屬性可以隨意修改,這是非常的不安全的:因為值可以任意修改,不論對錯。

這裡我們將介紹一種方法來更好的保護數據,保證數據的安全性:封裝。

封裝是面向對象的三大特性之一。

封裝指的是隱藏對象中一些不希望被外部所訪問到的屬性或方法>>點擊鏈接查看更多關於封裝的內容

第二節:隱藏類中的屬性

本文介紹了隱藏類中的屬性的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學習站官方技術圈!!

Leave a Reply

Your email address will not be published. Required fields are marked *