浅析Python中的getattr(),setattr(),delattr(),hasattr()


Posted in Python onJune 14, 2016

getattr()函数是Python自省的核心函数,具体使用大体如下:

获取对象引用getattr

Getattr用于返回一个对象属性,或者方法

class A: 
def __init__(self): 
self.name = 'zhangjing' 
 #self.age=''
def method(self): 
print"method print" 
Instance = A() 
print getattr(Instance , 'name, 'not find') #如果Instance 对象中有属性name则打印self.name的值,否则打印'not find'
print getattr(Instance , 'age', 'not find') #如果Instance 对象中有属性age则打印self.age的值,否则打印'not find'
print getattr(a, 'method', 'default') 
#如果有方法method,否则打印其地址,否则打印default 
print getattr(a, 'method', 'default')() 
#如果有方法method,运行函数并打印None否则打印default

注:使用getattr可以轻松实现工厂模式。

例:一个模块支持html、text、xml等格式的打印,根据传入的formate参数的不同,调用不同的函数实现几种格式的输出

import statsout 
def output(data, format="text"): 
output_function = getattr(statsout, "output_%s" % format) 
return output_function(data) 
setattr(object, name, value)
This is the counterpart of getattr(). The arguments
are an object, a string and an arbitrary value. The string may name an existing
attribute or a new attribute. The function assigns the value to the attribute,
provided the object allows it. For example, setattr(x,
'foobar', 123) is equivalent to
x.foobar = 123.

这是相对应的getattr()。参数是一个对象,一个字符串和一个任意值。字符串可能会列出一个现有的属性或一个新的属性。这个函数将值赋给属性的。该对象允许它提供。例如,setattr(x,“foobar”,123)相当于x.foobar = 123。

delattr(object, name)

This is a relative of setattr(). The arguments are
an object and a string. The string must be the name of one of the object's
attributes. The function deletes the named attribute, provided the object allows
it. For example, delattr(x, 'foobar') is
equivalent to del x.foobar.

与setattr()相关的一组函数。参数是由一个对象(记住python中一切皆是对象)和一个字符串组成的。string参数必须是对象属性名之一。该函数删除该obj的一个由string指定的属性。delattr(x, 'foobar')=del x.foobar

•hasattr用于确定一个对象是否具有某个属性。

语法:

hasattr(object, name) -> bool

判断object中是否有name属性,返回一个布尔值。

>>> li=["zhangjing","zhangwei"]
>>> getattr(li,"pop")
<built-in method pop of list object at 0x011DF6C0>
>>> li.pop
<built-in method pop of list object at 0x011DF6C0>
>>> li.pop()
'zhangwei'
>>> getattr(li,"pop")()
'zhangjing'
>>>getattr(li, "append")("Moe")
Python 相关文章推荐
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
解决python3 json数据包含中文的读写问题
May 10 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
python简单贪吃蛇开发
Jan 28 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
利用python numpy+matplotlib绘制股票k线图的方法
Jun 26 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
python实现录屏功能(亲测好用)
Mar 02 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
linux 下selenium chrome使用详解
Apr 02 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 #Python
Python模块包中__init__.py文件功能分析
Jun 14 #Python
Python计算字符宽度的方法
Jun 14 #Python
Python中文分词实现方法(安装pymmseg)
Jun 14 #Python
Python找出list中最常出现元素的方法
Jun 14 #Python
Python中列表元素转为数字的方法分析
Jun 14 #Python
python实现中文转换url编码的方法
Jun 14 #Python
You might like
也谈 PHP 和 MYSQL
2006/10/09 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
另一个javascript小测验(代码集合)
2011/07/27 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
详解Angular 4 表单快速入门
2017/06/05 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
python读取文本中的坐标方法
2018/10/14 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
Python中的类与类型示例详解
2019/07/10 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
Python requests上传文件实现步骤
2020/09/15 Python
用python计算文件的MD5值
2020/12/23 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
英国鞋网:Rubber Sole
2020/03/03 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
奥巴马演讲稿
2014/01/08 职场文书
二手房购房意向书范本
2014/04/01 职场文书
设备收款委托书范本
2014/10/02 职场文书
租车协议书范本2014
2014/11/17 职场文书
公司人事任命通知
2015/04/20 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技