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 ...
随机推荐
- 搜索引擎学习(三)Lucene查询索引
一.查询理论 创建查询:构建一个包含了文档域和语汇单元的文档查询对象.(例:fileName:lucene) 查询过程:根据查询对象的条件,在索引中找出相应的term,然后根据term找到对应的文档i ...
- Oracle复习(复习精简版v1.0)
自己没记不住的,超基础Oracle知识,新手可以看一下. 大多数例子是用scott用户中的emp表完成 排序:order by 列名 desc是降序,默认是升序: update 表名 set 列 ...
- Linux等待队列(Wait Queue)
1. Linux等待队列概述 Linux内核的等待队列(Wait Queue)是重要的数据结构,与进程调度机制紧密相关联,可以用来同步对系统资源的访问.异步事件通知.跨进程通信等.在Linux中,等待 ...
- (转载)Tomcat 7集群浅析
本文转载自:http://blog.csdn.net/wangyangzhizhou. 如有侵权,请联系处理! 简介 每个节点都要维护一份集群节点信息列表,集群组通知的默认实现是在使用 UDP 数 ...
- ESD(静电释放)上半部分
ESD(静电释放)上半部分 ESD:Electro-Static discharge静电释放 1.ESD静电释放的模式 1.1 人体放电模式(human body mode) 人体会释放静电,那么人体 ...
- 故意使用free掉的内存的一个实验( 常量区/栈)
故意使用free掉的内存的一个实验 考虑一下两种声明 struct stuff{ char home[10]; int num; char name[10]; }; struct stuff{ cha ...
- 【Python】数据结构
列表的更多特性 list.append(x) 在列表的末尾添加一个元素.相当于 a[len(a):] = [x] . list.extend(iterable) 使用可迭代对象中的所有元素来扩展列表. ...
- keepass+坚果云管理我的密码
目录 前言 下载安装KeePass 创建一个数据库 配置坚果云 手机用坚果云 总结 前言 KeePass是一款免费.小巧.绿色且开源的密码管理工具,多年来一直深受大众的好评,它能为用户提供一个 ...
- MATLAB中conv2的详细用法 (以及【matlab知识补充】conv2、filter2、imfilter函数原理)
转载: 1.https://blog.csdn.net/jinv5/article/details/52874880 2.https://blog.csdn.net/majinlei121/artic ...
- 利用rtklib处理GPS以及北斗数据详解
利用rtklib开源代码处理GPS以及北斗数据详解 在GNSS领域最基础的工作是这些GNSS系统的定位工作,对于绝大多数研究者,自己着手完成这些工作是一个"鸡肋":完全独立设计的话 ...