当前位置: 首页 > news >正文

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

封装的概念

  • 封装(Encapsulation

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

封装的作用

  • 限制安全的访问和操作,提高数据安全性
  • 可进行数据检查,从而有利于保证对象信息的完整性

封装的实现:隐藏

  • 保护属性:_属性名

  • 私有属性:__属性名

    • 被视作 _类名__属性名
class Account:# 普通属性bank = "BOC"# 内部属性_username = "Hogwarts"# 私有属性__password = "888"# 通过类名访问类属性
print(Account.bank)  # 将会打印 BOC
print(Account._username)  # 将会打印 Hogwarts
print(Account.__password)  # 将会引发 AttributeErrorprint(Account.__dict__)# 实例化
obj = Account()# 实例访问类属性
print(obj.bank)  # 将会打印 BOC
print(obj._username)  # 将会打印 Hogwarts
print(obj.__username)  # 将会引发AttributeError

封装的实现:暴露

  • 提供数据访问功能(getter

    • 计算属性
    • 语法:使用@property装饰器
    • 调用:实例.方法名
class Account:# 普通属性bank = "BOC"# 内部属性_username = "Hogwarts"# 私有属性__password = "888"@propertydef password(self):return self.__password# 实例化对象
obj = Account()# 访问实例的私有属性
print(obj.password)  # 将会打印 888

封装的实现:暴露

  • 提供数据操作功能(setter

    • 语法:使用@计算属性名.setter装饰器
    • 调用:实例.方法名
class Account:# 普通属性bank = "BOC"# 内部属性_username = "Hogwarts"# 私有属性__password = "888"@propertydef password(self):return self.__password@password.setterdef password(self, value):# 增加数据的校验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

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

http://www.lryc.cn/news/271241.html

相关文章:

  • Vue: 事件修饰符, 键盘事件, 鼠标事件,计算属性
  • 【ROS2】MOMO的鱼香ROS2(四)ROS2入门篇——ROS2节点通信之话题与服务
  • 2022年山东省职业院校技能大赛高职组云计算赛项试卷第三场-公有云
  • 现代 NLP:详细概述,第 1 部分:transformer
  • 记一次Mac端mysql重置密码
  • 【开题报告】基于java的流浪之家动物领养网站的设计与开发
  • 训狗技术从初级到高级,专业有效的训狗训犬教程
  • 如何让机器人具备实时、多模态的触觉感知能力?
  • datax
  • 【Java】SpringBoot快速整合WebSocket实现客户端服务端相互推送信息
  • C语言 linux文件操作(一)
  • 007、控制流
  • 将学习自动化测试时的医药管理信息系统项目用idea运行
  • k8s 的YAML文件详解
  • 【Pytorch】Pytorch或者CUDA版本不符合问题解决与分析
  • 『精』CSS 小技巧之BEM规范
  • vue3-12
  • 操作系统期末复习
  • element el-table实现可进行横向拖拽滚动
  • 【兔子王赠书第14期】《YOLO目标检测》涵盖众多目标检测框架,附赠源代码和全书彩图!
  • WPF 基础入门(样式)
  • Java ArrayList在遍历时删除元素
  • 多模态大模型的前世今生
  • Android studio 花式按键
  • 使用spring boot实现异常的统一返回
  • 2023-12-11 LeetCode每日一题(最小体力消耗路径)
  • PID为1的僵尸进程的产生及清理
  • 043、循环神经网络
  • node使用nodemonjs自动启动项目
  • Ts自封装WebSocket心跳重连