Python类反射机制使用实例解析


Posted in Python onDecember 30, 2019

这篇文章主要介绍了Python类反射机制使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

反射就是通过字符串的形式,导入模块;通过字符串的形式,去模块寻找指定函数并执行。

Python有四个内置函数:

函数 功能
getattr(object, attr[, default]) 获取指定字符串名称的对象属性或方法,如果对象有该属性则返回属性值,如果有该方法则返回该方法的内存地址,如果都没有就报错,如果指定了默认值找不到不会报错会取默认值
hasattr(object, attr) 判断指定字符串名称的对象是否有该属性或方法,返回True或False
setattr(object, attr, value) 为指定字符串名称的对象设置属性,如果对象已有该属性则覆盖属性值,如果没有该属性则新增属性并赋值
delattr(object, attr) 删除指定字符串名称的对象的某属性,如果对象没有该属性会报错

示例:

class Demo:

  def __init__(self):
    self.name = 'abc'

  def method(self):
    pass


# 实例化
d = Demo()

# 获取对象中的属性、方法
name = getattr(d, 'name')
func = getattr(d, 'method')
print(name)
print(func)
print('\r')

# 查看是否有属性或方法
print(hasattr(d, 'name'))
print(hasattr(d, 'method'))
print(hasattr(d, 'abc'))

# 设置对象的属性值
setattr(d, 'name', 'aaa') # 已有的属性值会修改
setattr(d, 'age', 10) # 没有该属性会新增并赋值

# 删除对象的属性
delattr(d, 'name')

输出结果:

abc
<bound method Demo.method of <__main__.Demo object at 0x00000000028A27F0>>

True
True
False

反射的使用

demo1:

# 导包
time = __import__('time')
# 获取方法
sleep = getattr(time, 'sleep')
# 调用
sleep(5)

等价于:

# 1
import time
time.sleep(5)
# 2
from time import sleep
sleep(5)

demo2:

# 导包
webdriver = __import__('selenium.webdriver', fromlist=['webdriver'])
# 实例化,获取方法
driver = webdriver.Chrome()
quit = getattr(driver, 'quit')
# 调用方法
quit()

等价于:

from selenium import webdriver
driver = webdriver.Chrome()
driver.quit()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中常用检测字符串相关函数汇总
Apr 15 Python
python编程羊车门问题代码示例
Oct 25 Python
关于Python的一些学习总结
May 25 Python
Python实现基于PIL和tesseract的验证码识别功能示例
Jul 11 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
Django框架搭建的简易图书信息网站案例
May 25 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
celery在python爬虫中定时操作实例讲解
Nov 27 Python
Python List remove()实例用法详解
Aug 02 Python
Python读取YAML文件过程详解
Dec 30 #Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
Dec 30 #Python
pytorch中获取模型input/output shape实例
Dec 30 #Python
Python读取csv文件实例解析
Dec 30 #Python
Pytorch Tensor的统计属性实例讲解
Dec 30 #Python
PyTorch中permute的用法详解
Dec 30 #Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 #Python
You might like
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
使用无限生命期Session的方法
2006/10/09 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
jQuery特殊符号转义的实现
2016/11/30 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
浅谈python字符串方法的简单使用
2016/07/18 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
是什么让J2EE适合用来开发多层的分布式的应用
2015/01/16 面试题
关于.NET, HTML的五个问题
2012/08/29 面试题
农村改厕实施方案
2014/03/22 职场文书
租房协议书范本
2014/04/09 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
python识别围棋定位棋盘位置
2021/07/26 Python
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python
Python采集壁纸并实现炫轮播
2022/04/30 Python