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 29 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
python图书管理系统
Apr 05 Python
python3 pillow模块实现简单验证码
Oct 31 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
python——全排列数的生成方式
Feb 26 Python
python开发前景如何
Jun 11 Python
pytorch SENet实现案例
Jun 24 Python
Python 列表推导式需要注意的地方
Oct 23 Python
python requests库的使用
Jan 06 Python
python opencv实现图像配准与比较
Feb 09 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
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
Js sort排序使用方法
2011/10/17 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
Python collections模块实例讲解
2014/04/07 Python
详解在Python中处理异常的教程
2015/05/24 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python基于property()函数定义属性
2020/01/22 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
添柏岚英国官方网站:Timberland英国
2019/11/28 全球购物
管理信息系学生的自我评价
2014/01/11 职场文书
个人自我评价范文
2014/02/05 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
2015年库房管理工作总结
2015/10/14 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL