python引用方法赋值问题探究
python脚本编写中,经常会遇到引用一个模块的方法的场景。引用的方法里到底赋不赋值曾经困扰了我好久。
最近利用python写了一个接口自动化测试脚本,在查阅观看多篇博文和视频后解决了封装方法引用的问题。自认为相对熟悉了封装方法引用这一块知识点,以下将具体阐述
以封装post请求的url方法为例
1、未封装前的代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import unittest
class Demo(unittest.TestCase):
def setUp(self):
domain = 'http://192.168.1.1'
endpoint = '/bo/ke/yuan/sousuo'
self.url = ''.join([domain,endpoint]) #该值为样例,无任何实际意义
def test_Demo1(self):
try:
result = requests.post(self.url,data=data)
self.assertEqual(result.text,200)
print ("Demo1测试通过")
except Exception as e:
print ('Demo1测试不通过’, e)
def tearDown(self):
pass
if __name__ == '__main__':
unittest.run()
2、对Demo类的domain值进行封装,创建Public包,在Public包下创建config类,代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def get_domain():
domain = 'http://192.168.1.1'
return domain
3、Demo类引用Public包下的config类,代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import unittest
from Public import config #引入Public模块
class Demo(unittest.TestCase):
def setUp(self):
domain = config.get_domain() #因为在Public包的config类里get_domain()没有在小括号里赋值,所以此处引用不需要赋值
endpoint = '/bo/ke/yuan/sousuo'
self.url = ''.join([domain,endpoint]) #该值为样例,无任何实际意义
………………………………
………………………………
4、为了安全和维护方便,可以继续对Demo类的self.url进行封装,在Public包创建base类,代码如下
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from Public import config
class url():
def get_url(Endpoint):
domain = config..get_domain()
endpoint = Endpoint
url = ''.join([domain,endpoint])
return url
5、Demo类调用Public包的base类,代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import unittest
from Public import base # 引用base类
#from Public import config 因为base类引用了config类,此处的config可以删掉
class Demo(unittest.TestCase):
def setUp(self):
endpoint = '/bo/ke/yuan/sousuo'
self.url = base.get_url(endpoint) #因为在base类中给get_url()中的()中赋值,因此引用get_url()时必须给它赋值
………………………………
………………………………
以上简单介绍了一下引用方法的括号内何时赋值何时不赋值的问题,工作中或许还会遇到更复杂的封装,大家可以相应的变通,原理是一样的。
python引用方法赋值问题探究的更多相关文章
- Python引用拷贝赋值
先安利一个网站,对学习编程很有帮助:http://www.pythontutor.com/ 可以逐行可视化执行代码,具体自行体验啦 这个网站也是我在看别人的博文时候找到的,也先贴上别人的理解吧,我觉得 ...
- python 深入理解 赋值、引用、拷贝、作用域
在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域, 这点和大多数 OO 语言类似吧,比如 C++.java 等 ~ 1.先来看个 ...
- Python 魔术方法指南
入门 构造和初始化 构造定制类 用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对象 总结 附录 介绍 此教 ...
- python引用和对象详解
python引用和对象详解 @[马克飞象] python中变量名和对象是分离的 例子 1: a = 1 这是一个简单的赋值语句,整数 1 为一个对象,a 是一个引用,利用赋值语句,引用a指向了对象1. ...
- Python引用复制,参数传递,弱引用与垃圾回收
引用 先上个示例: >>> val = [1] >>> val[0] = val >>> val [[...]] 上述代码使val中包含自身,而产 ...
- 【转】Python中的赋值、浅拷贝、深拷贝介绍
这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下 和很多语言一样,Python中 ...
- Python引用模块和查找模块路径
模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译 ...
- Python魔法方法总结及注意事项
1.何为魔法方法: Python中,一定要区分开函数和方法的含义: 1.函数:类外部定义的,跟类没有直接关系的:形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法 ...
- python中的赋值操作和复制操作
之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值.但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间.下面通过一个例子说明: p=[0,1,2,3,4 ...
随机推荐
- vue 游戏手柄使用
直接上代码. <template> <div class="home"> </div> </template> <script ...
- hadoop分布式格式化时出现异常java.net.unknownhostexception
当搭建好分布式集群后,准备使用命令格式化时 hdfs namenode format 在日志的最后一行出现 java.net.unknownhostexception的异常,通常是你的主机名没有配置好 ...
- mysql及联合查询
SQL语句分类 DDL 数据库定义语言 定义数据库对象 create alter truncate drop TPL 事务处理语言 rollback commit DCL 数据控制语言 由 GRANT ...
- Spring源码系列(四)--spring-aop是如何设计的
简介 spring-aop 用于生成动态代理类(底层是使用 JDK 动态代理或 cglib 来生成代理类),搭配 spring-bean 一起使用,可以使 AOP 更加解耦.方便.在实际项目中,spr ...
- spark 笔记2
一.Spark Shuffle 的发展 Spark 0.8及以前 Hash Based Shuffle Spark 0.8.1 为Hash Based Shuffle引入File Consolidat ...
- Redis小记(二)
1.redis数据库 redis数据库属于内存数据库,若不将数据存到磁盘中,服务器进程退出,数据也会消失 redis所有数据库都保存在redisServer结构的db数组中,db数组的每一项都是一个r ...
- Python-装饰器中保留被装饰函数元数据
函数的元数据包括哪些呢? 1. 函数名 .__name__ 2. 函数注释 .__doc__ ... 那,如何保留被装饰函数元数据,通过wraps装饰器保留被装饰函数的元数据 import time ...
- 【转载】C/走迷宫代码
1 #include<iostream> 2 #include<windows.h> 3 #include"GotoXY.h" 4 #include < ...
- HTML & CSS & JavaScript 从一个表格到一个灰阶颜色表 02
工具1:HBuilder X 1.9.9.20190522 工具2:火狐浏览器 67.0.4 (64 位) 其实,我想使用表格,做一个这样的颜色表,如下图所示: 例 3:我们参照上图,基于上一个例子, ...
- 【题解】PTA-Little Bird
Link 单调队列板子. 题目大意:一个点可以由距离它不超过\(k\)的点跳过来,如果那个点比它高就不需要花费体力,否则花费\(1\)的体力.问走到\(n\)的最小体力,多组询问. 显然的转移方程,设 ...