Python 中使用动态创建类属性的机制实现接口之后的依赖
我们在自动化测试中经常会需要关联用例处理,需要动态类属性;
推荐使用第二种方法:
创建:setattr()
获取:getattr()
1、容易出错的地方,不能使用全局变量
- 循环导模块的问题, 会报错
- 不能多次导入同一个变量, 变量值不会实时更新
可以进行写入文件或者配置文件
2、两种,如何创建 类属性 loan_id
# 第一种,动态创建
# 类名.属性名 = 具体的属性值
Context.loan_id = mysql_data.get('Id') # 动态创建类属性 # 第二种,创建 setattr(译:赛特attr)
# 如果第一个参数为实例对象, 那么将会为这个实例对象, 创建实例属性
# 如果第一个参数为类, 那么将会创建类型属性
# 第二个参数为属性名的字符串
# 第三个参数为具体的属性值
setattr(Context, "loan_id", mysql_data.get('Id')) # setattr(译:赛特attr) @classmethod
def loan_id_replace(cls, data):
if re.search(cls.loan_id_pattern, data): # 如果不查找可以直接替换
# 第一种,动态获取
# loan_id = Context.loan_id
# data = re.sub(cls.loan_id_pattern, loan_id, data) # 第二种:获取用 getattr(译:给特attr) 获取这个类当中的 loan_id 类属性的 值
# 如果第一个参数为实例对象 或 类
# 第二个参数为属性名的字符串
loan_id = str(getattr(Context, "loan_id")) # 我们获取的 loan_id 是int类型需要转换
data = re.sub(cls.loan_id_pattern, loan_id, data)
return data
其他情况:https://www.cnblogs.com/xiaogongjin/p/11906585.html
*******请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/shouhu/ 谢谢!!*******
Python 中使用动态创建类属性的机制实现接口之后的依赖的更多相关文章
- 非常易于理解‘类'与'对象’ 间 属性 引用关系,暨《Python 中的引用和类属性的初步理解》读后感
关键字:名称,名称空间,引用,指针,指针类型的指针(即指向指针的指针) 我读完后的理解总结: 1. 我们知道,python中的变量的赋值操作,变量其实就是一个名称name,赋值就是将name引用到一个 ...
- 第8.20节 Python中限制动态定义实例属性的白名单:__slots__
一. 引言 按照<第7.10节 Python类中的实例变量定义与使用>.<第7.14节Python类中的实例方法解析>中的介绍,当定义了一个类,并且创建了该类的实例后,可以给该 ...
- Python 中的引用和类属性的初步理解
最近对Python 的对象引用机制稍微研究了一下,留下笔记,以供查阅. 首先有一点是明确的:「Python 中一切皆对象」. 那么,这到底意味着什么呢? 如下代码: #!/usr/bin/env py ...
- [Python]利用type()动态创建类
Python作为动态语言,可以动态地创建函数和类定义.比如说定义一个Hello类,就写一个hello.py模块: #! /usr/bin/env python #coding=utf-8 class ...
- Python中type()详解:动态创建类
众所周知: type()函数可以查看变量的类型: 先看一个简单的列子来看一下type查看变量类型 class Animal(): pass a=Animal() print(type(a)) prin ...
- python-获取类名和方法名,动态创建类和方法及属性
获取类名和方法名1.在函数外部获取函数名称,用.__name__获取2.在函数内部获取当前函数名称,用sys._getframe().f_code.co_name方法获取3.使用inspect模块动态 ...
- Python面试常用的高级用法,怎么动态创建类?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第16篇文章,今天我们来聊聊Python当中的元类. 元类是Python当中的高级用法,如果你之前从来没见过这个术语 ...
- 使用python type动态创建类
使用python type动态创建类 X = type('X', (object,), dict(a=1)) # 产生一个新的类型 X 和下列方法class X(object): a = 1效 ...
- python装饰器、继承、元类、mixin,四种給类动态添加类属性和方法的方式(一)
介绍装饰器.继承.元类.mixin,四种給类动态添加类属性和方法的方式 有时候需要給类添加额外的东西,有些东西很频繁,每个类都需要,如果不想反复的复制粘贴到每个类,可以动态添加. # coding=u ...
随机推荐
- Lesson 11 How to grow old
What, accoroding to the author is the best way to overcome the fear of death as you get older? Some ...
- python中if语句和循环语句
//2019.12.05 python循环控制结构(一)控制循环结构 1-1 程序的判断语句与组合1.对于python的控制结构主要有以下三大类:(1)分支结构(2)循环结构(3)异常处理 2.pyt ...
- 新闻网大数据实时分析可视化系统项目——3、Hadoop2.X分布式集群部署
(一)hadoop2.x版本下载及安装 Hadoop 版本选择目前主要基于三个厂商(国外)如下所示: 1.基于Apache厂商的最原始的hadoop版本, 所有发行版均基于这个版本进行改进. 2.基于 ...
- .net高手:forms验证中中<forms loginUrl="" defaultUrl="">defaulturl和loginurl的区别
.net高手:forms验证中中<forms loginUrl="" defaultUrl="">defaulturl和loginurl的区别 d ...
- [经验] Cocos Creator使用笔记 --- 俄罗斯方块 (1)
一: 实现 物体匀速掉落 这是我在做俄罗斯方块的时候遇到的一个问题, 因为原来的方块的掉落是每秒掉落一个像素点, 但是这样看起来的话会是一卡一卡的, 为了让方块在掉落的过程中看起来更加的流畅, 于 ...
- 如何使用IDEA将maven项目打成war包
1.点击IDEA界面右边的maven project 2.双击package
- SPringBootJPA的使用快速开发
一文搞懂如何在 Spring Boot 中正确使用 JPA JPA 这部分内容上手很容易,但是涉及到的东西还是挺多的,网上大部分关于 JPA 的资料都不是特别齐全,大部分用的版本也是比较落后的.另外, ...
- 可旋转Treap(树堆)总结
树堆,在数据结构中也称Treap,是指有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树.其基本操作的期望时间复杂度为O(logn).相对于其他的平衡二叉搜索树,Trea ...
- javac导出参考文档报错 错误: 编码GBK的不可映射字符”
- 吴裕雄--天生自然JAVA数据库编程:事务处理
DROP TABLE user ; -- 删除表 CREATE TABLE user( id INT AUTO_INCREMENT PRIMARY KEY , name VARCHAR(30) NOT ...