当前位置: 首页 » Python(人生苦短) » py_basic » python的getattr(),setattr(),delattr(),hasattr()

python的getattr(),setattr(),delattr(),hasattr()

[文章目录] x

getattr(),setattr(),delattr(),hasattr()为常用的对象属性处理内置函数。

一、getattr()

获取对象引用getattr

注:使用getattr可以轻松实现工厂模式。
例:一个模块支持html、text、xml等格式的打印,根据传入的formate参数的不同,调用不同的函数实现几种格式的输出

二、setattr

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

三、delattr

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

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

语法: hasattr(object, name) -> bool 判断object中是否有name属性,返回一个布尔值。

方法一:
class FooClass:
pass

k = FooClass()
try:
#do some thing you need
print k.att
except AttributeError as e:
#error: has not attribute
pass

方法二:调用hasattr方法
hasattr(object, name)
说明:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的)。
参数object:对象。
参数name:特性名称。

方法三:使用dir方法

参考资料:
https://segmentfault.com/q/1010000000713465/a-1020000000713505
http://www.cnblogs.com/zhangjing0502/archive/2012/05/16/2503702.html
http://www.cnblogs.com/cenyu/p/5713686.html


下一篇 :

上一篇 :

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

$(document).ready(function(){ $("#article-index").css('display','none');});