该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

Python动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下。

先看一个简单的例子。

创建一个Student类,我希望通过实例来获取每个学生的一些情况,包括名字,成绩等。

成绩只有等到考试结束以后才会有,所以实例化的时候不会给它赋值。

Python自动化测试的动态属性

考试完以后,准备给mike打分:

Python自动化测试的动态属性

在这里,老师一不小心多打了个 9 ,通常来说打分都是 100 分值,999 是一个非法数据,不应该赋值成功。

学生一多,老师打分出现手误的情况肯定会越来越多,所以我们必须想办法修改程序,限制 score 的值必须在 0-100 分。

一:限制值

我们定义一个方法,如果输入的不是 0-100 的整数,就让程序报错,数据合法,我们就把 score 属性修改成功。

Python自动化测试的动态属性

这样我们每次需要获取成绩的时候使用 self.score 获取。修改成绩的时候调用函数来修改:

Python自动化测试的动态属性

调用以后会报错,因为999是非法数据。注意,这个时候我使用 self.score 还是可以进行设置,而且不报错:

Python自动化测试的动态属性

这显然是不行的。所以我们要提供一种机制,把 score 变成私有属性,不能让外部访问。很遗憾,python的私有属性是伪私有。

通常我们把 _ 开头的属性叫私有属性,但是这只是一种协议和规定,你看到下划线开头的属性,不要去访问了。你硬要访问,是可以的,python 并不会禁止。

二:使用@property的方式代替

上面的方法虽然实现了功能,但是改变了属性的使用方式。平常是这样使用的:

Python自动化测试的动态属性

三:动态属性的好处

统一了调用方式。self.score = 99 的方式,而不是函数调用的方式。_score 我们就不直接去使用了。你要用也可以,不建议。如果我们一个属性只可以读,把setter部分注释掉就可以了。现在我们来完善这个类,添加birth属性和年龄属性:

Python自动化测试的动态属性

birth和age这两个是可以根据一个求出另外一个的。存在数据冗余问题。age属性这样是有问题的。mike初始化的时候,age已经被求出来了,如果我在下一年再去访问 age 属性,那他就是个错误的值。可以通过把age设成现在的秒数来验证:

Python自动化测试的动态属性

四:动态显示

Python自动化测试的动态属性

注意,这里不要去设置 @age.setter ,因为他是动态变化的,你修改了会造成数据不一致,它只能作为一个只读属性。

@property作用和应用场景:

◆ @property 优化了属性读取和设置的可读性

◆ 需要限制属性的特征;

◆ 只读属性。如果属性只可以读,不可以写,用起来很方便。

◆ 这个属性根据一个变化的环境动态改变。

问 age 属性,那他就是个错误的值。可以通过把age设成现在的秒数来验证:

Python自动化测试的动态属性

四:动态显示

Python自动化测试的动态属性

注意,这里不要去设置 @age.setter ,因为他是动态变化的,你修改了会造成数据不一致,它只能作为一个只读属性。

@property作用和应用场景:

◆ @property 优化了属性读取和设置的可读性

◆ 需要限制属性的特征;

◆ 只读属性。如果属性只可以读,不可以写,用起来很方便。

◆ 这个属性根据一个变化的环境动态改变。

python自动监测动态视频_Python自动化检测的动态属性相关推荐

  1. python 财务报表审计_python 自动化审计

    本文通过介绍在python开发中经常出现的常规web漏洞,然后通过静态和动态两种方式对python代码进行自动化审计挖掘漏洞,并且展示自动化系统在自动化审计python应用代码的成果,本文比较长,请耐 ...

  2. pwd python 安装 模块_Python自动化办公之邮件定时发送

    Python自动化之邮件的定时发送,我们这里使用网易163邮箱. Python邮件操作相关模块的安装 yagmail,The goal here is to make it as simple and ...

  3. python mysql 遍历_Python自动化办公系列六(pdf文档处理)

    PDF 表示 Portable Document Format,使用 .pdf 作为文件扩展名.虽然 PDF 支持许多功能,但现在我们专注于最常做的两件事:从 PDF 读取文本内容和从已有的文档生成新 ...

  4. python模型预测_python:目标检测模型预测准确度计算方式(基于IoU)

    训练完目标检测模型之后,需要评价其性能,在不同的阈值下的准确度是多少,有没有漏检,在这里基于IoU(Intersection over Union)来计算. 希望能提供一些思路,如果觉得有用欢迎赞我表 ...

  5. python最新技术开锁工具_Python 自动化库介绍 PySimpleGUI

    python在运维和办公自动化中扮演着重要的角色,PySimpleGUI 是一款很棒的自动化辅助模块,让你更轻松的实现平常任务的自动化.javascript 一.PySimpleGUI安装 在命令行/ ...

  6. python办公自动化模块_Python自动化办公Excel模块openpyxl原理及用法解析

    openpyxl 介绍 openpyxl 是一个直接可用于读写 xlsx .xlsm.xltx.xltm 文件的 Python 内置库,借助它可以利用 Python 语法对本地 xlsx 文件进行自动 ...

  7. python无序序列_Python自动化Markdown无序列表

    应用场景 假如我们在编辑Markdown格式的文档,需要显示一个很大的列表,但目前只有每行的文本,那么需要在每一行的前面添加"* " ,这样在Markdown的文档就可以形成无序列 ...

  8. python excelwriter保存路径_Python自动化处理Excel报表,我的工作更轻松了!

    没有转义的Excel! Excel无处不在,即使我们使用了Python之类强大的辅助工具,依然无法摆脱Excel.因为你的老板和同事仍然需要方便的方法来访问重要数据.但是,这并不意味着你不能通过使用P ...

  9. python keys模块_python自动化常用模块

    python自动化常用函数 导入time模块 import time 导入ActionChains模块(鼠标) from selenium.webdriver.common.action_chains ...

最新文章

  1. springboot-mysql-pagehelper分页插件集成
  2. 【C#】详解C#委托
  3. c打开指定路径文件_C++ 读取指定路径下所有的文件 (C++ get the list of files in a directory)...
  4. 使用EasyPoi导出Excel
  5. linux系统常用命令详解
  6. WingPro 8 for Mac(专业Python IDE开发工具)
  7. Linux虚拟机设置Samba服务
  8. jdk安装目录 usr java_Mac查看已安装的jdk版本和jdk安装目录
  9. Java虚拟机(JVM)你只要看这一篇就够了!
  10. 英雄联盟大区测试稳定软件,英雄联盟官方公布新界面,部分大区展开测试,你最希望改什么?...
  11. iOS打包ipa无签名打包企业签
  12. SpringBoot框架用法解析大全(没有你找不到的)
  13. Android系统之路(初识MTK) ------ make update-api长按Power键添加Reboot项/内置默认Ringtone/SMS/Notification/Alarm删除系统铃声
  14. 关于Linux中批量配置SSH免密的一些笔记
  15. Web APIs /APIs --DOM简述/DOM中获取元素方法/事件(含鼠标事件)/操作(含案例)
  16. 2018-2019年世界将会出现一场经济危机,危机过后中国将会崛起!
  17. 翻转——C++青少年一级考资料
  18. C语言中怎么表示派 -π
  19. 如果应下载文件,请添加 MIME 映射
  20. 梦幻诛仙微信181服务器,《梦幻诛仙》手游数据互通服务器大全

热门文章

  1. mysql status uptime_MySQL优化(四) 慢查询的定位及优化
  2. java托盘图标变白在linux,升级Ubuntu后系统托盘图标消失
  3. 打印冻结窗格怎么保证每页都有_在打印Excel表时怎么设置才能实现每页都打印标题行...
  4. python打包和添加数据文件_Python打包时添加非代码文件的坑
  5. Mysql删除数据时出现执行很慢并且删除失败--线程堵塞
  6. Android开发笔记(七十七)图片缓存算法
  7. 循环执行次数 n(n+1)/2
  8. 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式(转载)
  9. 9day条件语句和基本数据类型
  10. Android 类库