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引用方法赋值问题探究的更多相关文章

  1. Python引用拷贝赋值

    先安利一个网站,对学习编程很有帮助:http://www.pythontutor.com/ 可以逐行可视化执行代码,具体自行体验啦 这个网站也是我在看别人的博文时候找到的,也先贴上别人的理解吧,我觉得 ...

  2. python 深入理解 赋值、引用、拷贝、作用域

    在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域, 这点和大多数 OO 语言类似吧,比如 C++.java 等 ~ 1.先来看个 ...

  3. Python 魔术方法指南

    入门 构造和初始化 构造定制类 用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对象 总结 附录 介绍 此教 ...

  4. python引用和对象详解

    python引用和对象详解 @[马克飞象] python中变量名和对象是分离的 例子 1: a = 1 这是一个简单的赋值语句,整数 1 为一个对象,a 是一个引用,利用赋值语句,引用a指向了对象1. ...

  5. Python引用复制,参数传递,弱引用与垃圾回收

    引用 先上个示例: >>> val = [1] >>> val[0] = val >>> val [[...]] 上述代码使val中包含自身,而产 ...

  6. 【转】Python中的赋值、浅拷贝、深拷贝介绍

    这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下   和很多语言一样,Python中 ...

  7. Python引用模块和查找模块路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译 ...

  8. Python魔法方法总结及注意事项

    1.何为魔法方法: Python中,一定要区分开函数和方法的含义: 1.函数:类外部定义的,跟类没有直接关系的:形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法 ...

  9. python中的赋值操作和复制操作

    之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值.但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间.下面通过一个例子说明: p=[0,1,2,3,4 ...

随机推荐

  1. 笨办法学Python3习题19

    学习笔记记录一下 def cheese_and_crackers(cheese_count, boxes_of_crackers): print (f"You have {cheese_co ...

  2. Kafka索引设计的亮点

    前言 其实这篇文章只是从Kafka索引入手,来讲述算法在工程上基于场景的灵活运用.单单是因为看源码的时候有感而写之. 索引的重要性 索引对于我们来说并不陌生,每一本书籍的目录就是索引在现实生活中的应用 ...

  3. Centos-对比文件差异-diff

    diff 比较文件差异 相关选项 -c 显示全部内容,并标记不同之处 -b 忽略行尾空格,并认为字符串中一个或多个空格视为相同 -r  当比较双方都是目录时,会比较子目录中的文件 -s 当两个文件相同 ...

  4. Ubuntu16.04下升级Python到3.7

    本帖从IT老兵博客学习得知: 本帖前提: 开发一个Python的系统,需要安装Python3.6以上的版本,由于使用的操作系统是Ubuntu16.04,默认带的Python是2.7.12和3.5,不满 ...

  5. 中秋国庆8天挑战赛 之 挑战8天掌握微信小程序

    中秋国庆8天挑战赛 挑战8天掌握微信小程序 当前学习进度: // 10.1​// 学习内容:​// 10.2​// 学习内容:​// 10.3​// 学习内容:​// 10.4​// 学习内容:​// ...

  6. NN相关资源(持续更新)

    Iris数据介绍 http://www.cnblogs.com/Belter/p/8831216.html

  7. Android作业0930

    1.使用ListView和Adapter实现购物商城 Android 布局文件 <?xml version="1.0" encoding="utf-8"? ...

  8. JDBC Java 程序从 MySQL 数据库中读取数据,并封装到 Javabean 对象中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 连接 MySQL 数据库 用于测试的 M ...

  9. P1297 单选错位 题解

    这是一道我们的考试题 前置芝士 期望 定义:试验中每次可能结果的概率乘以其结果的总和(来自百度某科 滑稽) 性质:\(E(ax+by)\) = \(xE(a)\) * \(yE(b)\) 计算式: \ ...

  10. python中input()函数与print()函数

    一.input()函数详解 二.print()函数详解 三.类型转换