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

第6章:Python TDD实例变量私有化探索

写在前面


这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许优质的单元测试是一个切入点。 就我个人而言,这本书确实很有帮助。第一次读的时候,很多细节我都不太懂,但将书中内容应用到工作中后,我受益匪浅。比如面对一些让人抓狂的代码设计时,书里的方法能让我逐步深入理解代码的逻辑与设计。 作为一名测试开发工程师,我想把学习这本书的经验分享给大家,希望能给大家带来帮助。因为现在工作中大多使用 Python 代码,所以我把书中JAVA案例都用 Python 代码进行了改写 。

问题背景说明

在面向对象编程中,对类的实例变量进行合理的访问控制是提高代码安全性和稳定性的重要手段。对于Dollar类的金额变量,如果直接暴露给外部随意访问和修改,可能会导致数据的不一致性和错误操作。通过探索实例变量私有化,限制外部对关键数据的直接操作,仅提供安全的访问接口,能够更好地保护数据的完整性,提升代码的健壮性。

在Python TDD开发中,合理管理实例变量的访问权限可以提高代码的安全性和稳定性。对于Dollar类的实例变量,我们尝试进行私有化操作。

6.1 思路说明

Python中没有像其他语言那样严格的私有变量定义方式,但可以通过约定俗成的方式(如在变量名前加下划线)来模拟私有变量。对Dollar类的金额变量进行私有化处理,同时提供访问和修改该变量的方法,以保证外部代码只能通过特定的接口来操作实例变量,增强代码的封装性。

6.2 测试代码

import unittestclass Dollar:def __init__(self, amount):self._amount = amountdef times(self, multiplier):return Dollar(self._amount * multiplier)def get_amount(self):return self._amountclass TestDollar(unittest.TestCase):def test_dollar_multiplication(self):five = Dollar(5)product = five.times(2)self.assertEqual(product.get_amount(), 10)if __name__ == '__main__':unittest.main()

6.3 源码说明

Dollar类中,我们将金额变量命名为_amount,使用单下划线表示这是一个“私有”变量,虽然在Python中不能完全阻止外部访问,但能起到一定的提示作用。times方法在进行乘法运算时使用的是_amount变量,确保内部运算的正确性。get_amount方法用于提供外部获取_amount变量值的接口。在测试用例test_dollar_multiplication中,创建了金额为5Dollar对象five,调用times方法进行乘法运算后,通过get_amount方法获取结果并与预期值10进行比较,验证times方法和get_amount方法的正确性。

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

相关文章:

  • Java操作Excel导入导出——POI、Hutool、EasyExcel
  • BUUCTF_Web([GYCTF2020]Ezsqli)
  • 微软宣布Win11 24H2进入新阶段!设备将自动下载更新
  • SpringBoot:解决前后端请求跨域问题(详细教程)
  • Android-V lmkd 中的那些属性值
  • PageHelper快速使用
  • 图像处理基础(3):均值滤波器及其变种
  • 力扣刷题心得_JAVA
  • 音乐播放器实现:前端HTML,CSS,JavaScript综合大项目
  • Unity编辑器缩放设置
  • ChatGPT大模型极简应用开发-CH1-初识 GPT-4 和 ChatGPT
  • Golang学习笔记_27——单例模式
  • хорошо哈拉少wordpress俄语主题
  • [数据结构与算法]js实现二叉树
  • MySQL程序之:连接到服务器的命令选项
  • python3GUI--仿崩坏三二次元登录页面(附下载地址) By:PyQt5
  • 阿里云 Serverless 助力盟主直播:高并发下的稳定性和成本优化
  • Unity 学习指南与资料分享
  • Android SystemUI——CarSystemBar视图解析(十一)
  • .NET周刊【1月第1期 2025-01-05】
  • 初识go语言之指针用法
  • 用户中心项目教程(二)---umi3的使用出现的错误
  • Android设备:Linux远程gdb调试
  • (十四)WebGL纹理坐标初识
  • 【机器学习】制造业转型:机器学习如何推动工业 4.0 的深度发展
  • Nginx安装配置Mac使用Nginx访问前端打包项目
  • 国自然面上项目|基于组合机器学习算法的病理性近视眼底多模态影像资料自动化定量分析研究|基金申请·25-01-18
  • 03_UI自适应
  • Python在DevOps中的应用:自动化CI/CD管道的实现
  • API接口技术推动电商数据处理的自动化