Python面向?qū)ο蠓庋b

面向?qū)ο蟆庋b


一、概述


Python面向?qū)ο蟮娜筇匦裕悍庋b、繼承和多態(tài)。


封裝:在類中對(duì)數(shù)據(jù)的賦值、內(nèi)部調(diào)用對(duì)外部用戶是透明的,類就像一個(gè)膠囊或容器,里面包含類的數(shù)據(jù)和方法。


二、封裝


在類中我們封裝什么?屬性、方法和對(duì)象


封裝,顧名思義就是將內(nèi)容封裝到某個(gè)地方,以后再去調(diào)用被封裝在某處的內(nèi)容。所以,在使用面向?qū)ο蟮姆庋b特性時(shí),需要:


·將內(nèi)容封裝到某處


·從某處調(diào)用被封裝的內(nèi)容


第一步:將內(nèi)容封裝到某處


self是一個(gè)形式參數(shù),當(dāng)執(zhí)行obj1 = Foo('wupeiqi', 18 )時(shí),self等于obj1當(dāng)執(zhí)行obj2 =Foo('alex', 78 )時(shí),self等于obj2


所以,內(nèi)容其實(shí)被封裝到了對(duì)象obj1和obj2中,每個(gè)對(duì)象中都有name和age屬性,在內(nèi)存里類似于下圖來保存。



第二步:從某處調(diào)用被封裝的內(nèi)容


調(diào)用被封裝的內(nèi)容時(shí),有兩種情況:


·通過對(duì)象直接調(diào)用


·通過self間接調(diào)用


1、通過對(duì)象直接調(diào)用被封裝的內(nèi)容


#將零散的數(shù)據(jù),包含在一個(gè)類型中#定義一個(gè)商品類型,封裝和商品有關(guān)系的數(shù)據(jù)



2、通過self間接調(diào)用被封裝的內(nèi)容


執(zhí)行類中的方法時(shí),需要通過self間接調(diào)用被封裝的內(nèi)容





將對(duì)象敏感的數(shù)據(jù),封裝在類的內(nèi)部,不讓外界直接訪問;而是通過定義的set/get方法來間接訪問內(nèi)部的數(shù)據(jù)的過程,此時(shí),就可以在set/get方法中,添加條件限制代碼!


>屬性私有化,才能讓外界不能直接訪問


>在p2和p3中,約定了以一個(gè)下劃線開頭的變量,是私有變量,外界不要直接使用


>p3中,要求兩個(gè)下劃線開頭的屬性,表示當(dāng)前類的私有屬性,外界不能訪問


綜上所述,對(duì)于面向?qū)ο蟮姆庋b來說,其實(shí)就是使用構(gòu)造方法將內(nèi)容封裝到對(duì)象中,然后通過對(duì)象直接或者self間接獲取被封裝的內(nèi)容。


三、 類型封裝的步驟


1.抽象一個(gè)類型,完成類的定義


2.使用__slots__魔法屬性,限制當(dāng)前類的屬性列表


3.所有屬性私有化


4.給每個(gè)屬性,提供set/get方法


備注:關(guān)于擴(kuò)展屬性(就是創(chuàng)建好對(duì)象之后增加的屬性),主要是預(yù)留下來,給共享的數(shù)據(jù)使用的


如果對(duì)象中,有需要共享的數(shù)據(jù),可以選擇使用這樣的屬性。


#設(shè)置當(dāng)前類創(chuàng)建的對(duì)象中,可能出現(xiàn)的屬性列表,列表中沒有出現(xiàn)的屬性名稱不允許使用



四、封裝的幾個(gè)階段:


1.類型的定義:零散數(shù)據(jù)包含在一個(gè)類中,封裝



2.屬性私有化,提供set/get函數(shù):封裝進(jìn)階



3.添加@property和@method.setter,隱藏set/get函數(shù):高級(jí)封裝



4.擴(kuò)展:同一個(gè)類中,出現(xiàn)了相同名稱但是參數(shù)不同的函數(shù):方法重載





五、總結(jié)


“封裝”就是將抽象得到的數(shù)據(jù)和行為(或功能)相結(jié)合,形成一個(gè)有機(jī)的整體(即類);封裝的目的是增強(qiáng)安全性和簡化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只是要通過外部接口,一特定的訪問權(quán)限來使用類的成員。


簡而言之:封裝就是將內(nèi)容封裝到某個(gè)地方,以后再去調(diào)用被封裝在某處的內(nèi)容。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Python面對(duì)對(duì)象封裝 1.1 面向過程和面向?qū)ο?根據(jù)操作數(shù)據(jù)的函數(shù)或語句塊來設(shè)計(jì)程序的過程,叫做面向過程編程...
    Newthan閱讀 219評(píng)論 0 0
  • 所謂封裝就是對(duì)外部世界隱藏對(duì)象的工作細(xì)節(jié) 今天老師講了四個(gè)例子,由簡入繁,由淺入深詳細(xì)分析了封裝的意義及用法 例1...
    惡人未滿閱讀 264評(píng)論 0 0
  • 封裝:將一堆零碎的東西封箱裝起來! 為什么需要封裝?封裝的作用和含義? 比如:①我要看電視,只需要按一下開關(guān)和換臺(tái)...
    云Shen不知處閱讀 358評(píng)論 3 0
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,391評(píng)論 6 13
  • 眾所周知,焦慮可以使人處于不良的精神狀態(tài)中,還會(huì)引發(fā)上火、失眠和胃口差等身體不適的情況,女性還可能因?yàn)榻箲]導(dǎo)致生理...
    付鴿鴿鴿鴿閱讀 859評(píng)論 0 5

友情鏈接更多精彩內(nèi)容