Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2146009
  • 博文数量: 333
  • 博客积分: 10161
  • 博客等级: 上将
  • 技术积分: 5238
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-19 08:59
文章分类

全部博文(333)

文章存档

2017年(10)

2014年(2)

2013年(57)

2012年(64)

2011年(76)

2010年(84)

2009年(3)

2008年(37)

分类: LINUX

2013-12-23 09:02:23

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

10.1.5    获取对象引用getattr
Getattr用于返回一个对象属性,或者方法

Python代码
  1. class A:   
  2.     def __init__(self):   
  3.         self.a = 'a'  
  4.     def method(self):   
  5.         print "method print"  
  6.   
  7. a = A()   
  8. print getattr(a, 'a''default'#如果有属性a则打印a,否则打印default   
  9. print getattr(a, 'b''default'#如果有属性b则打印b,否则打印default   
  10. print getattr(a, 'method''default')   
  11. #如果有方法method,否则打印其地址,否则打印default   
  12. print getattr(a, 'method''default')()   
  13. #如果有方法method,运行函数并打印None否则打印default  
Python代码 class A: def __init__(self): self.a = 'a' def method(self): print "method print" a = A() print getattr(a, 'a', 'default') #如果有属性a则打印a,否则打印default print getattr(a, 'b', 'default') #如果有属性b则打印b,否则打印default print getattr(a, 'method', 'default') #如果有方法method,否则打印其地址,否则打印default print getattr(a, 'method', 'default')() #如果有方法method,运行函数并打印None否则打印default" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage=""> 收藏代码
  1. class A:  
  2.     def __init__(self):  
  3.         self.a = 'a'  
  4.     def method(self):  
  5.         print "method print"  
  6.   
  7. a = A()  
  8. print getattr(a, 'a''default'#如果有属性a则打印a,否则打印default  
  9. print getattr(a, 'b''default'#如果有属性b则打印b,否则打印default  
  10. print getattr(a, 'method''default')  
  11. #如果有方法method,否则打印其地址,否则打印default  
  12. print getattr(a, 'method''default')()  
  13. #如果有方法method,运行函数并打印None否则打印default  

 



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

Python代码
  1. import statsout   
  2. def output(data, format="text"):                                
  3.      output_function = getattr(statsout, "output_%s" % format)   
  4.     return output_function(data)  




Setattr : 

setattr(objectnamevalue)

     This is the counterpart of . 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()的对应函数,函数的参数依次为:一个对象,一个字符串和一个任意值。字符串代表这个对象的一个属性,这个属性可以是已经存在的,也可以是这个对象已存在的属性中没有的属性,如果情况属于后者的话,那就是为这个对象新建一个属性,命名为string。并将value赋给属性string。例如:setattr(x,‘foobar’,123)等价于x.foobar = 123.


阅读(1417) | 评论(0) | 转发(0) |
0

上一篇:列表函数

下一篇:python内置函数dir

给主人留下些什么吧!~~