浅析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 中文字符串的处理实现代码
Oct 25 Python
python实现代理服务功能实例
Nov 15 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
python放大图片和画方格实现算法
Mar 30 Python
Python if语句知识点用法总结
Jun 10 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
python实现逐个读取txt字符并修改
Dec 24 Python
python获取Pandas列名的几种方法
Aug 07 Python
Python 实现RSA加解密文本文件
Dec 30 Python
python Scrapy爬虫框架的使用
Jan 21 Python
深度学习小工程练习之垃圾分类详解
Apr 14 Python
python基础之停用词过滤详解
Apr 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加密解密的代码
2006/10/09 PHP
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
php 操作调试的方法
2012/07/12 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python爬取某平台短视频的方法
2021/02/08 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
蛋白质世界:Protein World
2017/11/23 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
介绍一下Python中webbrowser的用法
2013/05/07 面试题
制作部班长职位说明书
2014/02/26 职场文书
主持词开场白
2014/03/17 职场文书
员工团队活动方案
2014/08/28 职场文书
单位接收函范文
2015/01/30 职场文书
机器人总动员观后感
2015/06/09 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书