中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python面向對象編程封裝的概念

發布時間:2021-07-22 18:11:55 來源:億速云 閱讀:168 作者:chen 欄目:互聯網科技

這篇文章主要講解了“python面向對象編程封裝的概念”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python面向對象編程封裝的概念”吧!

封裝的定義

封裝是面向對象編程的一個重要概念。它是指將類中部分屬性和方法加以隱藏與保護,使其只能在類內部使用而不能被外部直接訪問。

封裝最重要的優點有2條:一是提高了數據安全性、二是提高了代碼健壯性。

封裝的方法

在類內部定義的變量前加雙下劃線即表示該變量是私有的,外部不能直接訪問。

class User:__private = 'secret'def __print():print(f'不能告訴你{User.__private}')

封裝的原理

加了雙下劃線的變量為啥不能從類的外部調用?請認真觀察private和print兩個變量:

class User:__private = 'secret'def __print():print(f'不能告訴你{User.__private}')print(User.__dict__)out:{
   
   
   '__module__': '__main__', '_User__private': 'secret', '_User__print': <function User.__print at 0x0000026476656280>, '__dict__': <attribute '__dict__' of 'User' objects>, '__weakref__': <attribute '__weakref__' of 'User' objects>, '__doc__': None}

類內部定義雙下劃線開頭的變量會被python自動轉換成 單下劃線類名 雙下劃線 變量名。在類外部不能定義私有變量,即類外部定義雙下劃線開頭的變量不會被自動轉換。所以在類外部直接訪問私有變量會報錯。在類內部可以直接訪問私有變量。

另外知道python封裝原理后,在類外部實際上還是可以直接訪問私有變量,案例如下:

class User:__private = 'secret'def __print():print(f'不能告訴你{User.__private}')print(User._User__private)User._User__print()out:secret
不能告訴你secret

但是強烈建議不要在類外部直接訪問類內部的私有屬性,這樣做破壞了封裝的規則,不利于數據安全性和代碼健壯性。

封裝的案例

運用封裝的有很多,下面舉一個小案例:

class User:def __init__(self, name, password):self.name = name
        self.__password = passworddef chgpwd(self):pwd = input('請輸入舊密碼:')if pwd == self.__password:pwd1 = input('請輸入新密碼:')pwd2 = input('請再輸入一次:')if pwd1 == pwd2 and len(pwd1) >= 6:self.__password = pwd1return Falsereturn Truen1 = User('張三', '123456')while n1.chgpwd():print('密碼修改失敗,請重試!')

在上述代碼中,__password是私有屬性,不能直接修改!若要修改必須通過chgwd()方法,在該方法中有驗證舊密碼和重復新密碼的功能,確保修改密碼合規。在多人配合的項目中封裝是不可或缺的手段。經常用來驗證輸入的數據值是否合理等等。

感謝各位的閱讀,以上就是“python面向對象編程封裝的概念”的內容了,經過本文的學習后,相信大家對python面向對象編程封裝的概念這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

子长县| 天长市| 屏南县| 隆化县| 巴林左旗| 舞钢市| 乌兰浩特市| 拜城县| 柳州市| 兴国县| 文水县| 广汉市| 肃宁县| 浦东新区| 大足县| 休宁县| 平昌县| 台湾省| 高邮市| 花莲县| 剑阁县| 栾城县| 准格尔旗| 柏乡县| 子长县| 铁力市| 右玉县| 法库县| 新宾| 中西区| 山丹县| 麻江县| 五莲县| 浑源县| 稻城县| 丰县| 班玛县| 济南市| 大厂| 郑州市| 罗甸县|