写点什么

软件测试 / 测试开发丨 Python 封装 学习笔记

作者:测试人
  • 2023-07-25
    北京
  • 本文字数:1006 字

    阅读完需:约 3 分钟

免费领取:测试资料+性能测试+测试用例+简历模板+测试文档

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/26229

封装的概念

  • 封装(Encapsulation)隐藏:属性和实现细节,不允许外部直接访问暴露:公开方法,实现对内部信息的操作和访问

封装的作用

  • 限制安全的访问和操作,提高数据安全性

  • 可进行数据检查,从而有利于保证对象信息的完整性

封装的实现:隐藏

  • 保护属性:_属性名

  • 私有属性:__属性名被视作 _类名__属性名

class Account:
# 普通属性 bank = "BOC" # 内部属性 _username = "Hogwarts" # 私有属性 __password = "888"

# 通过类名访问类属性print(Account.bank) # 将会打印 BOCprint(Account._username) # 将会打印 Hogwartsprint(Account.__password) # 将会引发 AttributeError
print(Account.__dict__)
# 实例化obj = Account()
# 实例访问类属性print(obj.bank) # 将会打印 BOCprint(obj._username) # 将会打印 Hogwartsprint(obj.__username) # 将会引发AttributeError
复制代码

封装的实现:暴露

  • 提供数据访问功能(getter)计算属性语法:使用 @property 装饰器调用:实例.方法名

class Account:    # 普通属性    bank = "BOC"    # 内部属性    _username = "Hogwarts"    # 私有属性    __password = "888"
@property def password(self): return self.__password
# 实例化对象obj = Account()
# 访问实例的私有属性print(obj.password) # 将会打印 888
复制代码

封装的实现:暴露

  • 提供数据操作功能(setter)语法:使用 @计算属性名.setter 装饰器调用:实例.方法名

class Account:    # 普通属性    bank = "BOC"    # 内部属性    _username = "Hogwarts"    # 私有属性    __password = "888"
@property def password(self): return self.__password
@password.setter def password(self, value): # 增加数据的校验 if len(value) >= 8: self.__password = value else: print("密码长度最少要有8位!")

# 实例化对象obj = Account()
# 修改私有属性(满足校验条件)obj.password = "hogwarts666" # 修改成功print(obj.password) # 将会打印 hogwarts666
# 修改私有属性(不满足校验条件)obj.password = "123" # 修改不会生效print(obj.password) # 将会打印 888
复制代码


发布于: 刚刚阅读数: 3
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Python 封装 学习笔记_Python_测试人_InfoQ写作社区