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开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 Python
python服务器与android客户端socket通信实例
Nov 12 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
python列表使用实现名字管理系统
Jan 30 Python
python 对字典按照value进行排序的方法
May 09 Python
pytorch 归一化与反归一化实例
Dec 31 Python
Python如何根据时间序列数据作图
May 12 Python
Python3爬虫中Ajax的用法
Jul 10 Python
golang/python实现归并排序实例代码
Aug 30 Python
Python使用protobuf序列化和反序列化的实现
May 19 Python
Python实现拼音转换
Jun 07 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提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
Js动态创建div
2008/09/25 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
深入理解Python中的super()方法
2017/11/20 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
python怎么对数字进行过滤
2020/07/05 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
Django model class Meta原理解析
2020/11/14 Python
Django缓存Cache使用详解
2020/11/30 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
Python是如何进行类型转换的
2013/06/09 面试题
小班秋游活动方案
2014/02/22 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书
导游词之镜泊湖
2019/12/09 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers