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的Django框架与认证系统整合的方法
Jul 24 Python
使用python实现tcp自动重连
Jul 02 Python
Python有序查找算法之二分法实例分析
Dec 11 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
Python内置函数及功能简介汇总
Oct 13 Python
python利用opencv保存、播放视频
Nov 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
一个改进的UBB类
2006/10/09 PHP
php 什么是PEAR?(第二篇)
2009/03/19 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
javascript 常用关键字列表集合
2007/12/04 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
python调用动态链接库的基本过程详解
2019/06/19 Python
Python字符串对象实现原理详解
2019/07/01 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
业务经理的岗位职责
2013/11/16 职场文书
机电一体化自荐信
2013/12/10 职场文书
园林施工员岗位职责
2013/12/11 职场文书
优秀求职信范文分享
2013/12/19 职场文书
大四学生思想汇报
2014/01/13 职场文书
五四演讲稿范文
2014/09/03 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书