浅析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使用urllib2实现发送带cookie的请求
Apr 28 Python
python中的闭包用法实例详解
May 05 Python
Python3.2模拟实现webqq登录
Feb 15 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
python调用百度REST API实现语音识别
Aug 30 Python
python处理两种分隔符的数据集方法
Dec 12 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
Python如何读取、写入CSV数据
Jul 28 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 Python
详解运行Python的神器Jupyter Notebook
Jun 03 Python
python scrapy简单模拟登录的代码分析
Jul 21 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执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php 启动报错如何解决
2014/01/17 PHP
PHP加密技术的简单实现
2016/09/04 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
javascript History对象原理解析
2020/02/17 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
RC4文件加密的python实现方法
2015/06/30 Python
让python在hadoop上跑起来
2016/01/27 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
Python面向对象之继承代码详解
2018/01/29 Python
对python中list的五种查找方法说明
2020/07/13 Python
python 监控logcat关键字功能
2020/09/04 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
物理系毕业生自荐信
2013/11/01 职场文书
旅游节目策划方案
2014/05/26 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
趣味运动会加油词
2015/07/18 职场文书
2015中学教学工作总结
2015/07/22 职场文书