【测试开发】python系列教程:python反射

这篇具有很好参考价值的文章主要介绍了【测试开发】python系列教程:python反射。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这次我们分享python的反射


在java中大家都知道,java的反射的机制,其实在python中也是有反射机制的,我们看下如何 来用?

一、什么是反射?

程序可以访问、检测和修改'本身状态'或者行为的一种能力。大白话:其实就是通过字符串操作对象的数据和方法

二、反射的作用

正常使用对象中的方法是要通过变量名去调用的, 使用反射可以让用户,通过输入字符串,调用对象中的数据或者方法。

三、python反射的四个方法

hasattr() 判断对象是否含有字符串对应的数据或者功能

getattr() 根据字符串获取对应的变量名或者函数名

setattr() 根据字符串给对象设置数据 (名称空间的名字)

delattr() 根据字符串删除对象对应的数据 (名称空间中的名字)

四、代码演示

hasattr

结果:

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

getattr()

class Dog():
    name='123'
    def printagename(self):
        print('111')
# 1.获取类中的值
print(getattr(Dog,'name'))
# 2.获取类中的方法
print(getattr(Dog,'printagename'))
# 3.调用
a=Dog()
getattr(Dog,'printagename')(a)
# 4.获取对象中的方法
print(getattr(a,'name'))

结果展示

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

setattr()

class Dog():
    name='123'
    def printagename(self):
        print('111')
# 1.获取类中的值
print(getattr(Dog,'name'))
#2.通过反射修改
setattr(Dog,'name','addddd')
#3.获取修改后结果
print(getattr(Dog,'name'))    

结果展示:

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

delattr()

class Dog():
    name='123'
    def printagename(self):
        print('111')
# 1.获取类中的值
print(getattr(Dog,'name'))
#2.通过反射删除
delattr(Dog,'name')
#3.获取修改后结果
print(getattr(Dog,'name'))

结果展示

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

可以看到,在我们删除后,就没有这个属性或者方法了。

来看一个小案例

考虑有这么一个场景:需要根据用户输入url的不同,
调用不同的函数,实现不同的操作,
也就是一个WEB框架的url路由功能。
路由功能是web框架里的核心功能之一,例如Django的urls。

看下如何来实现

先来四个可以函数,来模拟不通的地址的文件

def login():
   print("这是一个登陆页面!")


def logout():
   print("这是一个退出页面!")

def home():
   print("这是网站主页面!")

来实现路由的分发

import url

def run():
   inp = input("请输入您想访问页面的url:  ").strip()
   if inp == "login":
      url.login()
   elif inp == "logout":
      url.logout()
   elif inp == "home":
      url.home()
   else:
      print("404")

if __name__ == '__main__':
    run()

执行

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

这就实现了一个简单的url路由功能,根据不同的url,执行不同的函数,获得不同的页面。

然而,让我们思考一个问题,如果有成百上千个路径函数呢(这很常见)?难道在run模块里写上成百上千个elif?显然这是不可能的!那么怎么办?

可以通过反射来实现

import url

def run():
   inp = input("请输入您想访问页面的url:").strip()
   func = getattr(url, inp)
   func()

if __name__ == '__main__':
    run()

执行验证

存在的url

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

不存在的url

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

如何改进呢,其实很简单,我们分享过hasattr可以判断,我们在执行前做个判断即可

访问存在的url

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

访问不存在的url

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

通过hasattr()的判断,可以防止非法输入导致的错误,并将其统一定位到错误页面。

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!文章来源地址https://www.toymoban.com/news/detail-744429.html

python 反射调用函数,职场日常,软件测试,自动化测试,单元测试,软件测试,程序人生,自动化测试,python,Powered by 金山文档

到了这里,关于【测试开发】python系列教程:python反射的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安全测试国家标准解读——函数调用安全、异常处理安全、指针安全

    下面的系列文章主要围绕 《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》 进行讲解,该标准是2020年4月28日,由国家市场监督管理总局、国家标准化管理委员会发布,2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理,大家感兴趣的话可以自己去下载

    2024年02月13日
    浏览(38)
  • 【vim 学习系列文章 19 -- 映射快捷键调用两个函数 A 和B】

    请阅读 【嵌入式开发学习必备专栏 之 Vim】 在 Vim 中,如果想通过按下 gcm 来调用两个函数,比如 FunctionA 和 FunctionB ,需要先定义这两个函数,然后创建一个映射。这个映射将会在被触发时依次调用这两个函数。 首先,确保 .vimrc 文件中包含了这两个函数的定义,以及一个用

    2024年04月13日
    浏览(34)
  • OpenAI 开发系列(四):掌握OpenAI API调用方法

    全文共4000余字,预计阅读时间约17~30分钟 | 满满干货(附代码),建议收藏! 本文目标:明确获取OpenAI API密钥的流程,理解如何调用OpenAI的各类大模型,并了解其对应的相关参数 代码下载点这里 前提:拥有OpenAI账户,并可以魔法上网,如果涉及账户或魔法上网问题,可参考本

    2024年02月11日
    浏览(31)
  • 【Wordpress高级教程】WordPress模板基本文件和常见函数调用代码

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。 WordPress有许多第三方开发的免费模板,安装方式简单易用。用户可以在支持 PHP 和 MySQL数据库的服务器上快速搭建自

    2024年02月02日
    浏览(24)
  • python 函数调用

    一、函数的定义 首先语法格式: 二、函数的调用 1.求两个整数的和: 运行结果: 2.关键参数 关键参数指通过对形参赋值的方式传递参数,避免了传递实参过程中,与定义函数的形参顺序不一致的情况。 运行结果: 3.默认参数 在函数定义时参数列表中的某个形参有值,则这

    2024年02月14日
    浏览(32)
  • Python 调用自定义函数

    新手入坑。 通常我们需要把公共函数提出来,作为公共资源调用。也避免了代码的重复书写。 比如我们在项目内创建我们的py脚本路径如下: 在公共方法中定义方法: 在其他脚本中调用如下:

    2024年02月14日
    浏览(40)
  • Java反射调用ashx

    这篇文章卡了大概一周,一个是没时间,只能带娃加锻炼间隙挤点时间,一个是碰到了问题卡住了。本篇实现反射调用ashx实现类的基础结构。 首先申明ashx的接口,所有的ashx实现类继承实现该接口的基类 然后实现第一个不需要会话的基类 然后实现主中间件中转调用实现的

    2024年02月07日
    浏览(20)
  • Scala反射调用object

    和反射class不同,反射class和java反射一样,object是静态代码块模式的单例,Scala 反射的核心是 scala.reflect.runtime.universe:代码如下: object:   反射调用: 反射 Scala object 核心是通过 staticModule 获取 ModuleMirror:

    2024年02月11日
    浏览(23)
  • Python 函数的定义与调用

    ✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 函数的定义与调用 Python 中使用 def 语句创建函数,其一般的格

    2024年01月25日
    浏览(31)
  • 【30天python从零到一】---第六天:函数、变量作用域、函数的链式调用和递归调用

    🍎 博客主页:🌙@披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 Python专栏 🌙请不要相信胜利就像山坡上的蒲公英一样唾手可得,但是请相信,世界上总有一些美好值得我们全力以赴,哪怕粉身碎骨!🌙 🍉一起加油,去追寻、去成为更好的自己

    2023年04月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包