亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

大悟县| 兴化市| 青海省| 汾阳市| 镇远县| 五大连池市| 星座| 荣昌县| 娄烦县| 洛扎县| 克东县| 蓝山县| 天水市| 孟津县| 遵义县| 南江县| 和田市| 山阳县| 达孜县| 伊通| 福贡县| 阆中市| 桃江县| 澄江县| 安乡县| 东阳市| 奉贤区| 英超| 大埔县| 朝阳市| 永寿县| 白山市| 丰都县| 山阴县| 华阴市| 德清县| 榕江县| 新巴尔虎右旗| 五寨县| 得荣县| 屯门区|