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 相关文章推荐
在Mac OS上搭建Python的开发环境
Dec 24 Python
详解python中的线程
Feb 10 Python
从django的中间件直接返回请求的方法
May 30 Python
详解Python_shutil模块
Mar 15 Python
Python 存储字符串时节省空间的方法
Apr 23 Python
python如何实现视频转代码视频
Jun 17 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
Python如何调用JS文件中的函数
Aug 16 Python
Django实现列表页商品数据返回教程
Apr 03 Python
利用jupyter网页版本进行python函数查询方式
Apr 14 Python
Python可以用来做什么
Nov 23 Python
一劳永逸彻底解决pip install慢的办法
May 24 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
php 魔术函数使用说明
2010/02/21 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
使用URL传输SESSION信息
2015/07/14 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
jQuery实现的form转json经典示例
2017/10/10 jQuery
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
vue监听对象及对象属性问题
2018/08/20 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
go语言计算两个时间的时间差方法
2015/03/13 Python
Python 递归函数详解及实例
2016/12/27 Python
Python实现曲线点抽稀算法的示例
2017/10/12 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
美术国培研修感言
2014/02/12 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
就业协议书范本
2014/04/11 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书