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 ...
随机推荐
- 关于数学公式Markdown
打开写博客(这都打不开就...) 再打开"选项". 选"启用数学公式支持"对(以后有用嘻嘻) 在默认编辑器里有Markdown选对. 然后就可以 \[\sum\ ...
- tf.split函数的用法(tensorflow1.13.0)
tf.split(input, num_split, dimension): dimension指输入张量的哪一个维度,如果是0就表示对第0维度进行切割:num_split就是切割的数量,如果是2就表 ...
- pwnable.kr-cmd2-witeup
程序清除了环境变量,解决对策是使用绝对地址使用各种命令和文件. 程序的过滤策略更加严格,过滤了/.天哪,使用绝对路径必用/,怎么办咩? 解决办法是使用pwd变量,它会显示当前目录,然而在/目录下执行此 ...
- subDomainsBrute安装(windows系统)
step1: 安装python2.7(省略) step2: 下载subDomainsBrute 地址: https://github.com/lijiejie/subDomainsBrute 下载 ...
- git的详细使用,项目创建到同步远程仓库,版本回退,忽略文件,分支创建,分支合并,分支名称修改,冲突解决,项目迁移
注意:此处省略git的安装 1..git的工作流程示意图: 2.本地仓库的初始化: 2.1 创建一个文件夹,如我创建的是:D:\gitdemo\shop 2.2 进入shop目录,鼠标右键,打开git ...
- Appium的一些问题的总结答案
问题 1. error: Failed to start an Appium session, err was: Error: Requested a new session but one ...
- Android Handler MessageQueue Looper 消息机制原理
提到Android里的消息机制,便会提到Message.Handler.Looper.MessageQueue这四个类,我先简单介绍以下这4个类 之间的爱恨情仇. Message 消息的封装类,里边存 ...
- 在Centos6上安装RabbitMQ的过程(有点坑)
1.安装依赖环境 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ ...
- Office远程代码执行漏洞(CVE-2017-11882)
POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文件. 网上看到的改进过的POC,我们直接拿来用,命令如下: #python ...
- SQL数据库删除和还原的时候提示 被占用 记录一下
设置离线 1)ALTER DATABASE [datebase] SET OFFLINE WITH ROLLBACK IMMEDIATE设置在线 2)ALTER DATABASE [datebase] ...