Python編程-封裝,繼承與多態(tài)
理解多態(tài)的使用等相關(guān)介紹,需要的朋友可以參考一下
一、類的封裝
為什么需要封裝:
Python
是面向?qū)ο蟮木幊陶Z言,因為面向?qū)ο笾兴械膶嶓w都是以對象為基本單位的,以宏觀世界的實體來映射到計算機(jī)世界中,每個對象有它自己的屬性和自己的行為,我們用類來將這些屬性和行為封裝到一起,當(dāng)它實例化出來一個對象的時候,我們可以說這個對象具有這些屬性性和行為。- 對象的數(shù)據(jù)封裝特性徹底消除了傳統(tǒng)結(jié)構(gòu)方法中數(shù)據(jù)與操作分離所帶來的種種問題,提高了程序的可復(fù)用性和可維護(hù)性,降低了程序員保持?jǐn)?shù)據(jù)與操作內(nèi)容的負(fù)擔(dān)。
- 對象的數(shù)據(jù)封裝特性還可以把對象的私有數(shù)據(jù)和公共數(shù)據(jù)分離開,保護(hù)了私有數(shù)據(jù),減少了可能的模塊間干擾,達(dá)到降低程序復(fù)雜性、提高可控性的目的。
1、案例演示
編寫程序 - 演示屬性沒有受保護(hù)的類.py
運(yùn)行程序,查看結(jié)果:
2、案例分析
上述案例將年齡賦值為一個負(fù)數(shù)-18,在語法上不會有任何問題,因此程序可以正常運(yùn)行,但在現(xiàn)實生活中明顯是不合理的,一般而言,年齡應(yīng)該是某個范圍內(nèi)的正整數(shù),比如[1, 120]內(nèi)的某一個整數(shù)值。
3、解決方案
為了避免出現(xiàn)上述不合理的問題,在設(shè)計一個Python類時,應(yīng)該對成員變量的訪問作出一些限定,不允許外界隨意訪問,這就需要實現(xiàn)類的封裝。
如何實現(xiàn)封裝:
1、封裝的定義
類的封裝,是指將對象的狀態(tài)信息隱藏在對象內(nèi)部,不允許外部程序直接訪問對象的內(nèi)部信息,而是通過該類所提供的方法來實現(xiàn)對內(nèi)部信息的操作訪問。
2、封裝的實現(xiàn)
在定義一個類時,把屬性定義為私有屬性,即在屬性名的前面加上兩個下劃線,私有屬性只能在它所在類中被訪問,如果外界想要訪問私有屬性,需要提供方法來訪問,其中包括用于獲取屬性值的get_xxx()方法(簡稱getter)和設(shè)置屬性值的set_xxx()方法(簡稱setter)。
3、案例演示
編寫程序 - 演示私有屬性.py
運(yùn)行程序,查看結(jié)果:
直接訪問私有屬性,看看會是什么情況?
到此這篇關(guān)于Python編程-封裝,繼承與多態(tài)的文章就介紹到這了,更多相關(guān)Python封裝,繼承與多態(tài)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解python 3.6 安裝json 模塊(simplejson)
這篇文章主要介紹了python 3.6 安裝json 模塊(simplejson),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04filter使用python3代碼進(jìn)行迭代元素的實例詳解
在本篇文章里小編給大家整理了關(guān)于filter使用python3代碼進(jìn)行迭代元素的實例詳解內(nèi)容,有興趣的朋友們可以參考下。2020-12-12python json load json 數(shù)據(jù)后出現(xiàn)亂序的解決方案
今天小編就為大家分享一篇python json load json 數(shù)據(jù)后出現(xiàn)亂序的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python遠(yuǎn)程開發(fā)環(huán)境部署與調(diào)試過程圖解
這篇文章主要介紹了Python遠(yuǎn)程開發(fā)環(huán)境部署與調(diào)試過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12