Python自动化测试的动态属性你知道吗?
2022/2/21 17:26:26
本文主要是介绍Python自动化测试的动态属性你知道吗?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Python动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下。
先看一个简单的例子。
创建一个Student类,我希望通过实例来获取每个学生的一些情况,包括名字,成绩等。
成绩只有等到考试结束以后才会有,所以实例化的时候不会给它赋值。
考试完以后,准备给mike打分:
在这里,老师一不小心多打了个 9 ,通常来说打分都是 100 分值,999 是一个非法数据,不应该赋值成功。
学生一多,老师打分出现手误的情况肯定会越来越多,所以我们必须想办法修改程序,限制 score 的值必须在 0-100 分。
1、限制值
我们定义一个方法,如果输入的不是 0-100 的整数,就让程序报错,数据合法,我们就把 score 属性修改成功。
这样我们每次需要获取成绩的时候使用 self.score 获取。
修改成绩的时候调用函数来修改:
调用以后会报错,因为999是非法数据。
注意,这个时候我使用 self.score 还是可以进行设置,而且不报错:
这显然是不行的。
所以我们要提供一种机制,把 score 变成私有属性,不能让外部访问。
很遗憾,python的私有属性是伪私有。
通常我们把 _ 开头的属性叫私有属性,但是这只是一种协议和规定,你看到下划线开头的属性,不要去访问了。
你硬要访问,是可以的,python 并不会禁止。
2、使用@property的方式代替
上面的方法虽然实现了功能,但是改变了属性的使用方式。
平常是这样使用的:
3、动态属性的好处
统一了调用方式。
self.score = 99 的方式,而不是函数调用的方式。
_score 我们就不直接去使用了。
你要用也可以,不建议。
如果我们一个属性只可以读,把setter部分注释掉就可以了。
现在我们来完善这个类,添加birth属性和年龄属性:
birth和age这两个是可以根据一个求出另外一个的。
存在数据冗余问题。
age属性这样是有问题的。
mike初始化的时候,age已经被求出来了,如果我在下一年再去访问 age 属性,那他就是个错误的值。
可以通过把age设成现在的秒数来验证:
4、动态显示
注意,这里不要去设置 @age.setter ,因为他是动态变化的,你修改了会造成数据不一致,它只能作为一个只读属性。
@property作用和应用场景:
◆ @property 优化了属性读取和设置的可读性
◆ 需要限制属性的特征;
◆ 只读属性。如果属性只可以读,不可以写,用起来很方便。
◆ 这个属性根据一个变化的环境动态改变。
好了 学习也就到此结束了 想了解更多相关知识请关注我吧!下面是小编想对读者大大们写的一封信哦! 记住要认真读哦!
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接免费拿走:————————————————
「学习资料 笔记 工具 文档领取」
扫描二维码,
备注“csdn999”
小姐姐邀你一起学习哦~~
和志同道合的测试小伙伴一起讨论测试技术
一定一定一定 要备注暗号:CSDN999
————————————————
这篇关于Python自动化测试的动态属性你知道吗?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门