網(wǎng)站開發(fā)集成環(huán)境seo優(yōu)化工作怎么樣
封裝的概念
-
封裝(
Encapsulation
)- 隱藏:屬性和實現(xiàn)細節(jié),不允許外部直接訪問
- 暴露:公開方法,實現(xiàn)對內(nèi)部信息的操作和訪問
封裝的作用
- 限制安全的訪問和操作,提高數(shù)據(jù)安全性
- 可進行數(shù)據(jù)檢查,從而有利于保證對象信息的完整性
封裝的實現(xiàn):隱藏
-
保護屬性:
_屬性名
-
私有屬性:
__屬性名
- 被視作?
_類名__屬性名
- 被視作?
class Account:# 普通屬性bank = "BOC"# 內(nèi)部屬性_username = "Hogwarts"# 私有屬性__password = "888"# 通過類名訪問類屬性
print(Account.bank) # 將會打印 BOC
print(Account._username) # 將會打印 Hogwarts
print(Account.__password) # 將會引發(fā) AttributeErrorprint(Account.__dict__)# 實例化
obj = Account()# 實例訪問類屬性
print(obj.bank) # 將會打印 BOC
print(obj._username) # 將會打印 Hogwarts
print(obj.__username) # 將會引發(fā)AttributeError
封裝的實現(xiàn):暴露
-
提供數(shù)據(jù)訪問功能(
getter
)- 計算屬性
- 語法:使用
@property
裝飾器 - 調(diào)用:
實例.方法名
class Account:# 普通屬性bank = "BOC"# 內(nèi)部屬性_username = "Hogwarts"# 私有屬性__password = "888"@propertydef password(self):return self.__password# 實例化對象
obj = Account()# 訪問實例的私有屬性
print(obj.password) # 將會打印 888
封裝的實現(xiàn):暴露
-
提供數(shù)據(jù)操作功能(
setter
)- 語法:使用@計算屬性名.setter裝飾器
- 調(diào)用:
實例.方法名
class Account:# 普通屬性bank = "BOC"# 內(nèi)部屬性_username = "Hogwarts"# 私有屬性__password = "888"@propertydef password(self):return self.__password@password.setterdef password(self, value):# 增加數(shù)據(jù)的校驗if len(value) >= 8:self.__password = valueelse:print("密碼長度最少要有8位!")# 實例化對象
obj = Account()# 修改私有屬性(滿足校驗條件)
obj.password = "hogwarts666" # 修改成功
print(obj.password) # 將會打印 hogwarts666# 修改私有屬性(不滿足校驗條件)
obj.password = "123" # 修改不會生效
print(obj.password) # 將會打印 888
最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!?