網(wǎng)站首頁 編程語言 正文
一、類的封裝
為什么需要封裝:
-
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é)果:
直接訪問私有屬性,看看會是什么情況?
原文鏈接:https://howard2005.blog.csdn.net/article/details/122698981
相關(guān)推薦
- 2022-10-13 解析React中useMemo與useCallback的區(qū)別_React
- 2022-06-14 C語言?auto和register關(guān)鍵字_C 語言
- 2022-09-19 Tomcat配置https?SSL證書的項目實踐_Tomcat
- 2022-10-30 Python對象循環(huán)引用垃圾回收算法詳情_python
- 2022-09-26 nodemon安裝在開發(fā)環(huán)境(非全局安裝)報錯解決【兩種方式】
- 2023-02-12 Jupyter?Notebook讀取csv文件出現(xiàn)的問題及解決_python
- 2022-03-15 安裝zabbix遇到的問題
- 2022-03-24 使用sublime?Text3過程中的各種問題的解決_相關(guān)技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支