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 30 Python
在Python的Flask框架中实现全文搜索功能
Apr 20 Python
用Python的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
windows下python和pip安装教程
May 25 Python
程序员的七夕用30行代码让Python化身表白神器
Aug 07 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
python制作英语翻译小工具代码实例
Sep 09 Python
python输出pdf文档的实例
Feb 13 Python
Python如何把十进制数转换成ip地址
May 25 Python
基于python实现查询ip地址来源
Jun 02 Python
python爬取豆瓣电影排行榜(requests)的示例代码
Feb 18 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
php 冒泡排序 交换排序法
2011/05/10 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
2016/07/08 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
js实现简单的无缝轮播效果
2020/09/05 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
Python Tkinter GUI编程入门介绍
2015/03/10 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
什么是岗位职责
2013/11/12 职场文书
教师自荐信范文
2013/12/09 职场文书
小学教师国培感言
2014/02/08 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
禁烟标语大全
2014/06/11 职场文书
创业计划书之校园超市
2019/09/12 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android